我如何使用QTextBlock?

jcu*_*nod 7 c++ qt4 qtextedit

我是C++和Qt的新手.

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

例如,如果我有句"鱼来了",我怎么把每个单词都放到自己的单词中QTextBlock并添加该单词QTextEdit,或者我误解了它QTextBlock是如何实际运作的?

Bil*_*ill 13

QTextEdit将允许您通过以下内容添加您的内容QString:

QTextEdit myEdit("the fish are coming");
Run Code Online (Sandbox Code Playgroud)

它还允许您使用a QTextDocument,其中包含文本块.该QTextDocument本身也可以接受QString:

QTextEdit myEdit;
QTextDocument* myDocument = new QTextDocument("the fish are coming", &myEdit);
myEdit.setDocument(myDocument);
Run Code Online (Sandbox Code Playgroud)

但是,"如果需要创建新文本块,或在检查文档内容时修改文档内容,请使用提供的基于游标的界面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();
Run Code Online (Sandbox Code Playgroud)

似乎需要付出很多努力才能找到我.您能否提供有关您认为需要使用QTextBlocks的原因的其他信息?