Как установить шрифт, размер и цвет для текста QPushButton в Qt5.6.1 с помощью QPalette? Поскольку мне любопытно узнать, как мы можем установить эти свойства без использования QStyleSheet в Qt. Также как мы можем установить шестнадцатеричный код цвета в QT. Пожалуйста, предложите любой способ сделать с QPalette. Спасибо
Как настроить текст на Qpushbutton с помощью 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")));
OR
pal.setColor(QPalette::Button, QColor("#ffffff"));
QPushButton
наследуетQWidget
, у которого естьfont
иpalette
. - person G.M.   schedule 21.10.2016