2014-03-31 426 views
3

我发现了同样的问题还有: how to change QCheckBox text label color in Qt?更改QCheckBox文本颜色

但不幸的是,它没有一个为我工作在Mac上。

在Linux和Windows上,默认情况下,QWidget(QLabel,QCheckBox,QRadioButton)的文本是白色的。 在Mac上,它是黑色的。不幸的是在我的屏幕上这个问题的原因与文本是不可读的(我有黑色背景)..

我已经得到的QCheckBox类,所以在构造函数中您将获得:

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 
    }; 

如果我使用的样式表所示:

setStyleSheet("QCheckBox { color : white; }; QCheckBox::indicator { color:black; }"); 

然后我的文字是白色的,因为我想,但对号本身变得不可见...

如果我用第2种方法:

QPalette p = palette(); 
p.setColor(QPalette::WindowText, Qt::white); 
setPalette(p); 

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

我也试过:

QPalette p = palette(); 
p.setColor(QPalette::Active, QPalette::WindowText, Qt::white); 
p.setColor(QPalette::Inactive, QPalette::WindowText, Qt::white); 
setPalette(p); 

你要知道,我只得到在mac上这个怪异的行为;如果我在Linux中尝试相同的代码(使用不同的颜色,如红色),那么所有的行为都像我想要的那样。

关于如何更改QCheckBox文本的颜色以及仅文本的任何想法?

+0

您可以尝试指定必须使用新样式表修改小部件的哪个部分。例如,如果您的复选框名称为MythCheckBox_0,则可以调用MythCheckBox_0.setStyleSheet(“#MythCheckBox_0 {color:white;}”);或者类似的东西。 – Ilya

+0

尝试像你一样的样式表,但没有重新定义QCheckBox :: indicator'setStyleSheet(“QCheckBox {color:white;}); css;' –

+0

QDesigner是否在你手边?如果我遇到调色板问题颜色我使用它来简单地玩弄颜色,看看是否解决了我的问题 – Bowdzone

回答

0

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

QCheckBox { 
    border: none; 
    color: white; 
} 

适用于我。