我对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的任何其他信息?

10-07 21:44