首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改QCheckBox文本颜色

更改QCheckBox文本颜色
EN

Stack Overflow用户
提问于 2014-03-31 20:26:41
回答 1查看 3K关注 0票数 3

我在那里发现了同样的问题:how to change QCheckBox text label color in Qt?

但不幸的是,这些都不适合我在mac上使用。

在Linux和Windows上,默认情况下QWidget (QLabel,QCheckBox,QRadioButton)的文本是白色的。在mac上,它是黑色的。不幸的是,这会导致我的屏幕出现问题,因为文本是不可读的(我有黑色背景)..

我已经派生了QCheckBox类,所以在构造函数中您会得到:

代码语言:javascript
复制
class MPUBLIC MythCheckBox: public QCheckBox
{
    Q_OBJECT

  public:
    MythCheckBox(QWidget *parent = 0, const char *name = "MythCheckBox")
        : QCheckBox(parent)
    {
        setObjectName(name);
#ifdef Q_OS_MAC
//        setStyleSheet("QCheckBox { color : white; }; QCheckBox::indicator { color:black; }");
        QPalette p = palette();
        p.setColor(QPalette::WindowText, Qt::white);
        setPalette(p);
#endif
    };

如果我使用如下样式表:

代码语言:javascript
复制
setStyleSheet("QCheckBox { color : white; }; QCheckBox::indicator { color:black; }");

然后我的文本是我想要的白色,但复选标记本身是看不见的…

如果我使用第二种方法:

代码语言:javascript
复制
QPalette p = palette();
p.setColor(QPalette::WindowText, Qt::white);
setPalette(p);

复选框文本确实变成了白色,而复选标记本身仍然是黑色的,它看起来像是在工作。但是,如果我将焦点移到QCheckBox上,文本将再次变为黑色,并且将永远保持黑色。

我也试过了:

代码语言:javascript
复制
QPalette p = palette();
p.setColor(QPalette::Active, QPalette::WindowText, Qt::white);
p.setColor(QPalette::Inactive, QPalette::WindowText, Qt::white);
setPalette(p);

请注意,我只在mac上得到了这种奇怪的行为;如果我在Linux上尝试相同的代码(具有不同的颜色,如红色),那么一切都像我想要的那样。

关于如何改变QCheckBox文本的颜色,并且只改变文本的颜色,有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2016-05-23 22:44:48

对于某些小部件,您必须禁用本机外观(外观)。例如QPushButton (http://doc.qt.io/qt-4.8/stylesheet-reference.html)。因此,对于checkbox,您可以尝试设置边框。因此,checkbox的样式如下所示:

代码语言:javascript
复制
QCheckBox {
   border: none;
   color: white;
}

这对我很有效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22761517

复制
相关文章

相似问题

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