我发现了同样的问题还有: 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文本的颜色以及仅文本的任何想法?
您可以尝试指定必须使用新样式表修改小部件的哪个部分。例如,如果您的复选框名称为MythCheckBox_0,则可以调用MythCheckBox_0.setStyleSheet(“#MythCheckBox_0 {color:white;}”);或者类似的东西。 – Ilya
尝试像你一样的样式表,但没有重新定义QCheckBox :: indicator'setStyleSheet(“QCheckBox {color:white;}); css;' –
QDesigner是否在你手边?如果我遇到调色板问题颜色我使用它来简单地玩弄颜色,看看是否解决了我的问题 – Bowdzone