我对QPushButton有个问题。我使用QT4.8和设计师。
我将按钮配置为“平面”和“可检查”。如果没有选中,按钮应该是红色的,如果选中,则应该是绿色的。为了设计按钮的样式,我使用了样式表。
QPushButton:default{
background-color: red;
color: red;
}
QPushButton:checked{
background-color: green;
color: black;
}
现在问题来了。如果未选中按钮,则为灰色。当我按下按钮时,他变绿了。我尝试过其他不同的伪状态,比如!checked,或者尝试更改为普通按钮。但都是一样的。默认情况下,样式表无法工作。如果我按下,悬停或任何按钮,它正在改变,我想它。
有谁遇到过同样的问题,有解决办法吗?
再进一步解释一下。颜色属性工作正常。文字总是红色的,除了我按下按钮,然后它是黑色的。因此,样式表正在使用,但是,只是背景色属性不起作用。
我尝试过不同的风格,比如motif,cde,清洁剂等等,它们总是一样的。
发布于 2013-11-01 07:17:37
我在QPushButton类引用中找到了这个。“此属性的默认值为false。如果设置了此属性,大多数样式将不会绘制按钮背景,除非按下按钮。setAutoFillBackground()可用于确保使用QPalette::按钮刷填充背景。”正因为如此,我找到了以下解决方案。
首先,我保留了样式表选项以进行检查。
QPushButton:checked{
background-color: green.
}
I使用调色板并设置背景色和setAutoFillBackground函数。
palette_red->setColor(window.button->backgroundRole(), QColor(255, 0, 0, 127));
window.button->setAutoFillBackground(true);
window.button->setPalette(*palette_red);
我使用切换信号捕捉更改。当按钮切换为真时,样式表开始工作。为了不获得双(绿色对红色)颜色,必须再次关闭setAutoFillBackground。
window.button->setAutoFillBackground(false);
不切换状态几乎是一样的。我需要打开setAutoFillBackground并再次设置调色板。
window.button->setAutoFillBackground(true);
window.button->setPalette(*palette_red);
这是一个解决方案,它有效,但我仍然开放进一步的投入。
https://stackoverflow.com/questions/19669385
复制相似问题