更改QCheckBox文本颜色

时间:2014-03-31 12:26:41

标签: c++ qt

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

但不幸的是,在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; }");

然后我的文字是白色的,但是复选标记本身变得不可见......

如果我使用第二种方法:

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文本颜色以及仅更改文本的任何想法?

1 个答案:

答案 0 :(得分:0)

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

QCheckBox {
   border: none;
   color: white;
}

适合我。