I'm completely new to C++ and Qt.
I want to populate a QTextEdit
object with QTextBlocks
, how do I do that?
e.g. If I have the sentence "the fish are coming" how would I put each word into its own QTextBlock
and add that block to QTextEdit
, or have I misunderstood how QTextBlock
actually works?
QTextEdit
will let you add your contents via a QString
:
QTextEdit myEdit("the fish are coming");
It also allows you to use a QTextDocument
, which holds blocks of text.
The QTextDocument
itself also can accept a QString
:
QTextEdit myEdit;
QTextDocument* myDocument = new QTextDocument("the fish are coming", &myEdit);
myEdit.setDocument(myDocument);
However, "If you need to create a new text block, or modify the contents of a document while examining its contents, use the cursor-based interface provided by QTextCursor
instead." (Qt documentation) (Note, I added the QTextBlockFormat
lines to make it explicit where the blocks are.)
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();
Seems like a lot of effort to go through to me. Can you give any additional information on why you feel you need to use QTextBlock
s?
Keep them on the same line by using insertText without using insertBlock between.
For instance, when I tried
cursor.insertText("I will try ", textFormat);
cursor.insertText("this for you.", textFormat);
for you, the words all appeared on the same line.
insertBlock inserts a paragraph.
You should check the documentation here
You could assign your string to a QString and then add that to the QTextEdit, or you could parse the QString using section() see here