如何使用QPushButton QPalette为Qt5.6.1中的文本设置字体、大小和颜色?我很想知道如何在Qt中不使用QStyleSheet来设置这些属性QStyleSheet。以及我们如何在QT中设置十六进制颜色代码。请建议使用QPalette的任何方法。谢谢
发布于 2016-10-21 18:35:46
如何使用QPushButton为Qt5.6.1中的文本设置字体、大小和颜色?
QPalette包含每个小部件状态的颜色组。它不包含字体/大小信息。
您可以使用QWidget::setPalette()来更改特定的色彩角色 (按钮、ButtonText、窗口)。。),并使用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));为了使调色板正常工作,您可能需要首先在应用程序中使用融合样式,方法是:
QApplication::setStyle(QStyleFactory::create("Fusion"));在用QApplication实例化main()实例之前,因为某些样式没有在所有绘图中使用调色板,例如,如果它们使用本机主题引擎的话。Windows XP、Windows和OS样式都是如此。
另外,您可能希望在整个应用程序上设置调色板/字体,以便在应用程序中的所有小部件中获得这些颜色。就像这样:

#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-24 11:00:56
我同意上述各点。
下面是使用实现字体自定义的另一种方法: 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"));https://stackoverflow.com/questions/40178432
复制相似问题