我在那里找到了相同的问题:
如何在Qt中更改QCheckBox文本标签颜色?
但不幸的是,在我的Mac上,它们都不能正常工作。
在Linux和Windows上,默认情况下,QWidget(QLabel、QCheckBox、QRadioButton)的文本是白色的。但在Mac上,它是黑色的。不幸的是,由于文本不可读(我有黑色背景),这会导致我的屏幕出现问题。
我已经派生了QCheckBox类,因此在构造函数中,您可以得到:
如果我使用样式表,例如:
然后,我的文本就像我想要的那样变成了白色,但是复选框本身变得不可见...
如果我使用第二种方法:
复选框的文本会变为白色,复选框本身的对勾仍然是黑色的,看起来它可以正常工作。但是如果我将焦点移动到QCheckBox上,文本就会再次变成黑色,并且将永远保持黑色。 我也尝试过:
在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 的文本颜色而不更改其他内容呢?
setStyleSheet("QCheckBox { color : white; });
- Rud Limaverde