gpt4 book ai didi

css - QPushButton 没有改变背景颜色

转载 作者:行者123 更新时间:2023-11-28 11:40:01 26 4
gpt4 key购买 nike

我对 QPushButton 有疑问。我使用 QT 4.8 和设计器。

我将按钮配置为“平面”和“可检查”。如果未选中,按钮应为红色,如果选中,则应为绿色。我使用样式表来设置按钮的样式。

      QPushButton:default{
background-color: red;
color: red;
}

QPushButton:checked{
background-color: green;
color: black;
}

现在是问题。如果未选中该按钮,则它是灰色的。当我按下按钮时,他会像它应该的那样变成绿色。我尝试了不同的其他伪状态,如 !checked,或尝试更改为普通按钮。但它总是一样的。在默认状态下,样式表不工作。如果我按下、悬停或任何按钮,它就会按照我想要的方式改变。

有人遇到同样的问题并有解决方案吗?

稍微解释一下。颜色属性工作正常。文字总是红色的,除非我按下按钮然后它是黑色的。所以样式表正在使用中,但是背景颜色属性不起作用。

我尝试了不同的风格,比如 motif、cde、cleanlooks 等,但总是一样。

最佳答案

我在 QPushButton Class Reference 中找到了这个。 “此属性的默认值为 false。如果设置了此属性,除非按下按钮,否则大多数样式将不会绘制按钮背景。setAutoFillBackground() 可用于确保使用 QPalette::Button 画笔填充背景。”因此,我找到了以下解决方案。

首先我保留了样式表选项以选中

     QPushButton:checked{
background-color: green.
}

我使用调色板并设置背景颜色和 setAutoFillBackground 函数。

     palette_red->setColor(window.button->backgroundRole(), QColor(255, 0, 0, 127));
window.button->setAutoFillBackground(true);
window.button->setPalette(*palette_red);

我使用切换信号来捕捉变化。当按钮切换为 TRUE 时,样式表开始工作。为了不获得双色(绿色超过红色),必须再次关闭 setAutoFillBackground。

     window.button->setAutoFillBackground(false);

未切换状态几乎相同。我需要打开 setAutoFillBackground 并再次设置调色板。

     window.button->setAutoFillBackground(true);
window.button->setPalette(*palette_red);

这是一个解决方案,它有效,但我仍然愿意接受进一步的意见。

关于css - QPushButton 没有改变背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19669385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com