更改 QCheckBox 文本颜色

2024-03-31

我在那里发现了同样的问题:如何在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 文本的颜色并且仅更改文本的颜色有什么想法吗?


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

QCheckBox {
   border: none;
   color: white;
}

对我有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改 QCheckBox 文本颜色 的相关文章