我对 C++ 和 Qt 完全陌生。
我想用 填充一个QTextEdit
对象QTextBlocks
,我该怎么做?
例如,如果我有“鱼来了”这句话,我将如何将每个单词放入其中QTextBlock
并将该块添加到 中QTextEdit
,或者我是否误解了QTextBlock
实际的工作原理?
QTextEdit
将允许您通过以下方式添加内容QString
:
QTextEdit myEdit("the fish are coming");
它还允许您使用 a QTextDocument
,它包含文本块。本身QTextDocument
也可以接受:QString
QTextEdit myEdit;
QTextDocument* myDocument = new QTextDocument("the fish are coming", &myEdit);
myEdit.setDocument(myDocument);
但是,“如果您需要创建一个新的文本块,或者在检查文档内容的同时修改文档的内容,请改用由提供的基于光标的界面QTextCursor
。” (Qt 文档) (注意,我添加了这些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
s 吗?
使用 insertText 将它们保持在同一行,而不使用 insertBlock 。
例如,当我尝试
cursor.insertText("I will try ", textFormat);
cursor.insertText("this for you.", textFormat);
对你来说,这些词都出现在同一行。
insertBlock 插入一个段落。