Ecco un esempio completo che utilizza il testo RTF di QTextDocument.
mainwindow.cpp:
#include "mainWindow.h"
void MainWindow::paintEvent(QPaintEvent*)
{
QPainter painter(this);
QTextDocument td;
td.setHtml("K<sub>max</sub>=K<sub>2</sub> · 3");
td.drawContents(&painter);
}
Se è necessario per disegnare il testo al punto specifico, tradurre il sistema di coordinate del pittore prima di disegnare:
painter.translate(QPointF(50, 50));
mainwindow.cpp - Un'altra soluzione:
#include "mainWindow.h"
void MainWindow::paintEvent(QPaintEvent*)
{
QPainter painter(this);
QTextDocument td;
td.setHtml("K<sub>max</sub>=K<sub>2</sub> · 3");
QAbstractTextDocumentLayout::PaintContext ctx;
ctx.clip = QRectF(0, 0, 400, 100);
td.documentLayout()->draw(&painter, ctx);
}
mainWindow.h:
#include <QtGui>
class MainWindow: public QWidget
{
protected:
void paintEvent(QPaintEvent*);
};
main.cpp:
#include <QtGui>
#include "mainWindow.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow mainWindow;
mainWindow.show();
return app.exec();
}
Il file di progetto:
TEMPLATE = app
QT += gui
HEADERS = mainWindow.h
SOURCES = main.cpp mainWindow.cpp
Risultato:

fonte
2015-04-27 11:17:04
si può mostrare in un QLabel, come: 'QLabel lbl ("
K max
=K
.3 "); lbl.show(); '. – vahanchoGrazie per la risposta, ma sto provando a stampare il testo in un file PDF utilizzando QPrinter come dispositivo di pittura – luffy
È possibile impostare il codice html su un'etichetta, quindi acquisire il contenuto dell'etichetta come pixmap e dipingere il testo come un immagine con la tua stampante. Altrimenti non esiste una tale funzione che supporti le formule di disegno. – vahancho