我对C++和Qt完全陌生。
我想用QTextEdit
填充QTextBlocks
对象,该怎么做?
例如如果我有一个句子“鱼来了”,我该如何将每个单词放入自己的QTextBlock
中并将该块添加到QTextEdit
中,或者我误解了QTextBlock
的实际工作方式?
最佳答案
QTextEdit
将允许您通过QString
添加内容:
QTextEdit myEdit("the fish are coming");
它还允许您使用
QTextDocument
,其中包含文本块。QTextDocument
本身也可以接受QString
:QTextEdit myEdit;
QTextDocument* myDocument = new QTextDocument("the fish are coming", &myEdit);
myEdit.setDocument(myDocument);
但是,“如果需要创建新的文本块,或者在检查文档内容的同时修改文档的内容,请改用
QTextCursor
提供的基于光标的界面。” (Qt documentation)(注意,我添加了QTextBlockFormat
行以使其明确显示块在哪里。)QTextEdit myEdit;
QTextDocument* myDocument = new QTextDocument(&myEdit);
myEdit.setDocument(myDocument);
QTextCursor* myCursor = new QTextCursor(myDocument);
QTextBlockFormat format;
format.setBackground(Qt::red);
myCursor->setBlockFormat(format);
myCursor->insertText("the ");
format.setBackground(Qt::green);
myCursor->insertBlock(format);
myCursor->insertText("fish ");
format.setBackground(Qt::yellow);
myCursor->insertBlock(format);
myCursor->insertText("are ");
format.setBackground(Qt::red);
myCursor->insertBlock(format);
myCursor->insertText("coming!");
format.setBackground(Qt::green);
myCursor->insertBlock(format);
myCursor->insertText(QString(%1 blocks").arg(myDocument->blockCount()));
myEdit.show();
似乎需要付出很多努力才能完成。您能否提供有关为什么需要使用
QTextBlock
的任何其他信息?