Как настроить текст на Qpushbutton с помощью QPalette?

Как установить шрифт, размер и цвет для текста QPushButton в Qt5.6.1, используя QPalette? Мне любопытно узнать, как мы можем установить эти свойства без использования QStyleSheet в Qt. Также, как мы можем установить шестнадцатеричный код цвета в QT. Пожалуйста, предложите любой способ сделать с QPalette.Спасибо

2 ответа

Как установить шрифт, размер и цвет для текста QPushButton в Qt5.6.1, используя QPalette?

QPalette содержит цветовые группы для каждого состояния виджета. Он не содержит информацию о шрифте / размере.

Ты можешь использовать QWidget::setPalette() изменить определенные цветовые роли (Button, ButtonText, Window. . .) и использовать QWidget::setFont() изменить семейство шрифтов / размер. Например:

QPushButton button("Press Me");
//get initial default palette
QPalette pal= button.palette();
//change some color roles
pal.setColor(QPalette::Window, QColor(255, 0, 0)); //red color
pal.setColor(QPalette::Button, QColor(0x00, 0x00, 0xff)); //blue color (hex representation)
pal.setColor(QPalette::ButtonText, QColor(Qt::yellow)); //Qt global color
button.setPalette(pal);
//change font family and size
button.setFont(QFont("Helvetica [Cronyx]", 15, QFont::Bold));

Чтобы палитры работали правильно, вы можете сначала использовать стиль Fusion в приложении, вызвав:

QApplication::setStyle(QStyleFactory::create("Fusion"));

до создания экземпляра QApplication экземпляр в main() потому что некоторые стили не используют палитру для всех рисунков, например, если они используют собственные движки тем. Это относится как к стилям Windows XP, Windows Vista и OS X.

Кроме того, вы можете установить палитру / шрифт для всего приложения, чтобы получить эти цвета во всех виджетах приложения. Что-то вроде этого:

Скриншот

#include <QtWidgets>

int main(int argc, char** argv)
{
    QApplication::setStyle(QStyleFactory::create("Fusion"));
    QPalette pal= QApplication::palette();
    pal.setColor(QPalette::Window, QColor(Qt::red));
    pal.setColor(QPalette::Button, QColor(Qt::blue));
    pal.setColor(QPalette::ButtonText, QColor(Qt::yellow));
    pal.setBrush(QPalette::WindowText, QBrush(QColor(Qt::yellow)));
    pal.setColor(QPalette::Highlight, QColor(Qt::green));
    //further palette customization. . . 
    QApplication::setPalette(pal);
    QApplication::setFont(QFont("Helvetica [Cronyx]", 15, QFont::Bold));

    QApplication a(argc, argv);

    //setup and show GUI components

    return a.exec();
}

Я согласен с вышеупомянутыми пунктами.
Ниже приведен еще один подход к настройке шрифтов с помощью QWidgets.

QPushButton *button3 = new QPushButton("CheckFont", this); button3->setGeometry(QRect(QPoint(50,50),QSize(200,50))); QFont FontObj; FontObj.setFamily(QStringLiteral("Helvetica [Cronyx]")); FontObj.setPointSize(15); FontObj.setBold(true); FontObj.setUnderline(true); button3->setFont(FontObj);

Также, когда цветовой код имеет формат, подобный "#ffffff" (то есть белый цветовой код), вы можете использовать следующий способ, чтобы установить шестнадцатеричный цветовой код с помощью QPalette.

pal.setColor(QPalette::Button, QColor(QRgb("#ffffff")));

ИЛИ ЖЕ

pal.setColor(QPalette::Button, QColor("#ffffff"));
Другие вопросы по тегам