繁体   English   中英

更改 QCheckBox 的背景颜色

[英]Changing Background color of QCheckBox

我想要一个具有以下样式的复选框:

为此,我创建了以下样式表:

QCheckBox { background-color : cyan; }
QCheckBox::indicator { width : 20px; height : 20px; }

遗憾的是,结果出乎我的意料,这是我得到的:

在此处输入图片说明

但我希望所有背景都带有青色。 我检查了关于样式表Qt 文档,还检查了一些旧问题,但没有一个对我有用。 当我添加QCheckBox::indicator{ background-color : cyan; } QCheckBox::indicator{ background-color : cyan; }按钮成了所有青色(如对国家未选中第一个图像)上选中和未选中状态。 添加诸如border类的其他属性都没有帮助我。

我也尝试改用 QPalette,但从未改变。

这是我的代码:

    QWidget* w = new QWidget();

    QCheckBox* cb = new QCheckBox(w);

    cb->setFixedSize(20, 20);
    cb->setStyleSheet(QString("QCheckBox { background-color : cyan; }") + '\n' +
                      "QCheckBox::indicator { width : 20px; height : 20px; border : }");
    w->show();

编辑 28/09/2020

我最近发现应用程序的风格对其有影响。 我使用的是 Breeze 风格,更改为 Fusion 风格使其按预期工作。 唯一的问题是它需要更改应用程序本身的主题。 无论如何,这是代码示例,以防它对任何人有帮助:

#include <QApplication>
#include <QWidget>
#include <QCheckBox>


int main(int argc, char** argv)
{
    QApplication a(argc, argv);
    qApp->setStyle(QStyleFactory::create("Fusion"));
    QWidget* w = new QWidget();

    QCheckBox* cb = new QCheckBox(w);

    cb->setFixedSize(20, 20);
    cb->setStyleSheet(QString("QCheckBox { background-color : cyan; }") + '\n' +
                      "QCheckBox::indicator { width : 20px; height : 20px; border : }");
    w->show();
}

大概

QCheckBox::indicator:unchecked {background-color : cyan;});

是你想看到的。

编辑:为时已晚

我没有使用样式表命令解决我的问题,我实际上认为SOURCE是不可能的。

无论如何,我能够使用一张用于选中状态的图像和另一幅用于未选中状态的图像来实现我的目标,如下所示。

    QWidget* w = new QWidget();

    QCheckBox* cb = new QCheckBox(w);

    cb->setFixedSize(20, 20);
    cb->setStyleSheet("QCheckBox::indicator { width : 20; height : 20; }\n"
                      "QCheckBox::indicator::unchecked { image : url(/path/**/unchecked.png); }\n"
                      "QCheckBox::indicator::checked { image : url(/path/**/checked.png); }");
    w->show();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM