8

我对 C++ 和 Qt 完全陌生。

我想用 填充一个QTextEdit对象QTextBlocks,我该怎么做?

例如,如果我有“鱼来了”这句话,我将如何将每个单词放入其中QTextBlock并将该块添加到 中QTextEdit,或者我是否误解了QTextBlock实际的工作原理?

4

3 回答 3

13

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();

对我来说似乎付出了很多努力。你能提供任何额外的信息来说明你为什么觉得你需要使用QTextBlocks 吗?

于 2009-12-04T22:24:33.730 回答
1

使用 insertText 将它们保持在同一行,而不使用 insertBlock 。

例如,当我尝试

cursor.insertText("I will try ", textFormat);
cursor.insertText("this for you.", textFormat);

对你来说,这些词都出现在同一行。

insertBlock 插入一个段落。

于 2013-02-26T05:17:21.487 回答
0

你应该在这里查看文档

您可以将字符串分配给 QString,然后将其添加到 QTextEdit,或者您可以使用 section() 解析 QString,请参见此处

于 2009-12-04T20:56:14.943 回答