首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用QPalette自定义Q按钮上的文本?

如何使用QPalette自定义Q按钮上的文本?
EN

Stack Overflow用户
提问于 2016-10-21 13:50:58
回答 2查看 5.9K关注 0票数 2

如何使用QPushButton QPalette为Qt5.6.1中的文本设置字体、大小和颜色?我很想知道如何在Qt中不使用QStyleSheet来设置这些属性QStyleSheet。以及我们如何在QT中设置十六进制颜色代码。请建议使用QPalette的任何方法。谢谢

EN

回答 2

Stack Overflow用户

发布于 2016-10-21 18:35:46

如何使用QPushButton为Qt5.6.1中的文本设置字体、大小和颜色?

QPalette包含每个小部件状态的颜色组。它不包含字体/大小信息。

您可以使用QWidget::setPalette()来更改特定的色彩角色 (按钮、ButtonText、窗口)。。),并使用QWidget::setFont()更改字体系列/大小。例如:

代码语言:javascript
复制
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));

为了使调色板正常工作,您可能需要首先在应用程序中使用融合样式,方法是:

代码语言:javascript
复制
QApplication::setStyle(QStyleFactory::create("Fusion"));

在用QApplication实例化main()实例之前,因为某些样式没有在所有绘图中使用调色板,例如,如果它们使用本机主题引擎的话。Windows XP、Windows和OS样式都是如此。

另外,您可能希望在整个应用程序上设置调色板/字体,以便在应用程序中的所有小部件中获得这些颜色。就像这样:

代码语言:javascript
复制
#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();
}
票数 3
EN

Stack Overflow用户

发布于 2016-10-24 11:00:56

我同意上述各点。

下面是使用实现字体自定义的另一种方法: QWidgets.

代码语言:javascript
复制
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设置十六进制颜色代码。

代码语言:javascript
复制
pal.setColor(QPalette::Button, QColor(QRgb("#ffffff")));

代码语言:javascript
复制
pal.setColor(QPalette::Button, QColor("#ffffff"));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40178432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档