我在那里发现了同样的问题:如何在Qt中更改QCheckBox文本标签颜色? https://stackoverflow.com/questions/11153945/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 文本的颜色并且仅更改文本的颜色有什么想法吗?