LINUX.ORG.RU

История изменений

Исправление Stack77, (текущая версия) :

Если только виджеты нужны - я бы так сделал (минимальный пример):

// Button.h

#ifndef BUTTON_H
#define BUTTON_H

#include <QPushButton>
#include <QPainter>
#include <QTextDocument>

class Button : public QPushButton
{
Q_OBJECT

public:
    Button(QWidget *parent = 0): QPushButton(parent)
        { }

    void setHtml(QString html)
        {
            _htmlText = html;
        }

    void paintEvent(QPaintEvent *p)
        {
            QPushButton::paintEvent(p);
            QPainter painter(this);

            QTextDocument document;
            document.setHtml(_htmlText);
            document.drawContents(&painter);
        }

private:
    QString _htmlText;
};

#endif // BUTTON_H

// main.cpp
...
Button btn;
btn.setHtml("<b>Bolder Text</b><br><i>Italic Text</i>");
...

Исходная версия Stack77, :

Если только виджеты нужны - я бы так сделал (минимальный пример):

// Button.h

#ifndef BUTTON_H
#define BUTTON_H

#include <QPushButton>
#include <QPainter>
#include <QTextDocument>

class Button : public QPushButton
{
Q_OBJECT

public:
    Button(QWidget *parent = 0): QPushButton(parent)
        { }

    void setHtml(QString html)
        {
            _htmlText = html;
        }

private:
    QString _htmlText;

void paintEvent(QPaintEvent *p)
    {
        QPushButton::paintEvent(p);
        QPainter painter(this);

        QTextDocument document;
        document.setHtml(_htmlText);
        document.drawContents(&painter);
    }
};

#endif // BUTTON_H

// main.cpp
...
Button btn;
btn.setHtml("<b>Bolder Text</b><br><i>Italic Text</i>");
...