我如何使用QTextBlock?

时间:2009-12-04 20:46:24

标签: c++ qt4 qtextedit

我对C ++和Qt完全不熟悉。

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

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

3 个答案:

答案 0 :(得分:11)

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的原因的其他信息?

答案 1 :(得分:1)

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

例如,当我尝试

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

对你而言,所有单词都出现在同一行。

insertBlock插入一个段落。

答案 2 :(得分:0)

您应该查看文档here

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

相关问题