#include #include #include #include class Widget : public QWidget { public: Widget(QWidget *parent = 0, Qt::WindowFlags f = 0); QSize sizeHint() const; protected: void paintEvent(QPaintEvent *); }; Widget::Widget(QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f) { } QSize Widget::sizeHint() const { return QSize(150, 50); } void Widget::paintEvent(QPaintEvent *) { QPainter painter(this); QTextLayout layout; layout.setText("19.28.37.46"); QTextOption textOption = layout.textOption(); textOption.setAlignment(Qt::AlignHCenter); layout.setTextOption(textOption); qreal lineWidth = width(); qreal height = 0; layout.beginLayout(); forever { QTextLine line = layout.createLine(); if (!line.isValid()) break; line.setLineWidth(lineWidth); line.setPosition(QPointF(0, height)); height += line.height(); } layout.endLayout(); QVector selections; QTextLayout::FormatRange formatRange; formatRange.start = 0; formatRange.length = 1; formatRange.format.setBackground(Qt::red); selections.append(formatRange); layout.draw(&painter, QPoint(0, 0), selections); } int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget widget; widget.show(); return a.exec(); }