如何使用QPalette在 Qt5.6.1 中为QPushButton的文本设置字体、大小和颜色?我很想知道我们如何在不使用 QStyleSheet 的情况下设置这些属性 Qt。还有我们如何在 QT 中设置颜色的十六进制代码。请提出任何使用 QPalette 的方法。 谢谢
问问题
5217 次
2 回答
3
Qt5.6.1中如何使用QPalette为QPushButton的Text设置字体、大小和颜色?
AQPalette
包含每个小部件状态的颜色组。它不包含字体/大小信息。
您可以使用QWidget::setPalette()
更改特定的颜色角色(按钮、按钮文本、窗口...),并使用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();
}
于 2016-10-21T18:35:46.140 回答
1
我同意上述观点。
以下是使用 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"));
于 2016-10-24T11:00:56.983 回答