i have a program that needs to paint some text with paintEvent().
i’ve tried this:
1. QPainter painter; // painter for the canvas
2. painter.drawText(QPoint location, QString canvasText);
where
3. QString canvasText = variablesText.append("< b >");
4. variablesText.append((*fieldIter).second.c_str());
5. variablesText.append(":< /b > ");
6. variablesText.append(someValue);
7. variablesText.append("\n");
I need the text to be formated, canvasText should look like:
Some bold text: some not bold text. (newLine)
Some bold text 2: some not bold text2. (newLine) and that goes on for a while.
The problem i’m having is that a QString can’t have HTML code in it, so the text is displayed like:
< b>Some bold text:< /b> some not bold text. < b>Some bold text 2: < /b>
some not bold text2.\n
Is there a way to use draw in paintEvent to show the text the way i need it? with a QString (or QLabel or something)
I’m using Qt4.
Thanks for the help =)
QTextDocumentseems like a good fit for what you’re after, specificallysetHtml(). AQTextDocumentcan format your text and paint the result to the screen via your widget’sQPainter. Something like the below is the simplest possible solution:Bear in mind, however, that this is likely to be very inefficient. You’ll probably want to
drawContents()to a cachedQPixmaponly when your source html changes…