Qt - QPushButton форматирование текста - PullRequest
7 голосов
/ 07 июня 2010

У меня есть QPushButton, и на этом у меня есть текст и значок.Я хочу сделать текст на кнопке жирным и красным.Посмотрел другие форумы, погуглил и потерял надежду.Кажется, нет способа сделать это, если у кнопки есть значок (конечно, если вы не создаете новый значок с текстом + прежний значок).Это единственный способ?У кого-нибудь есть идея получше?

Ответы [ 3 ]

18 голосов
/ 09 июня 2010

Вам действительно не нужно создавать подклассы для изменения форматирования вашей кнопки, просто используйте таблицы стилей, например,

QPushButton {
    font-size: 18pt;
    font-weight: bold;
    color: #ff0000;
}

Применение этой кнопки к кнопке, которую вы хотите изменить, сделает текст кнопок 18pt, жирным и красным. Вы можете подать заявку через widget->setStyleSheet()

Применение этого к виджету в иерархии выше будет стилизовать все кнопки внизу, механизм стилей QT очень гибкий и довольно хорошо документирован.

Вы также можете установить таблицы стилей в дизайнере, это будет стилизовать виджет, который вы редактируете немедленно

5 голосов
/ 07 июня 2010

вы создаете подкласс "QPushbutton", затем переопределяете событие рисования, там вы изменяете текст по вашему желанию.

вот оно,

class button : public QPushButton
    {
    Q_OBJECT

public:
    button(QWidget *parent = 0)
        {

        }
    ~button()
        {

        }

    void paintEvent(QPaintEvent *p2)
        {

        QPushButton::paintEvent(p2);

            QPainter paint(this);
            paint.save();
            QFont sub(QApplication::font());
            sub.setPointSize(sub.pointSize() + 7);
            paint.setFont(sub);
            paint.drawText(QPoint(300,300),"Hi");
            paint.restore();

        }
    };

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


    button b1;
    b1.showMaximized();
    return a.exec();
}
2 голосов
/ 19 февраля 2015

Вы можете создать подкласс QLabel и полностью отбросить все его события мыши (чтобы они достигли родителя). Затем создайте QPushButton, установите для него макет и в этот макет вставьте QLabel с форматированным текстом. Вы получаете кнопку, которая содержит QLabel и доступна для нажатия. (Любой виджет Qt может иметь набор макетов, включая те, которые вы никогда не ожидали.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...