我对C ++和Qt完全不熟悉。
我想用QTextEdit
填充QTextBlocks
个对象,我该怎么做?
例如如果我有句子“鱼来了”我怎么把每个单词放到自己的QTextBlock
中并将该单词添加到QTextEdit
,或者我误解了QTextBlock
实际上是如何运作的?
答案 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)