首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QPushButton不改变背景色本身。

QPushButton不改变背景色本身。
EN

Stack Overflow用户
提问于 2013-10-29 21:22:15
回答 2查看 6.2K关注 0票数 4

我对QPushButton有个问题。我使用QT4.8和设计师。

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

代码语言:javascript
运行
复制
      QPushButton:default{
         background-color: red;
             color: red;
      }

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

现在问题来了。如果未选中按钮,则为灰色。当我按下按钮时,他变绿了。我尝试过其他不同的伪状态,比如!checked,或者尝试更改为普通按钮。但都是一样的。默认情况下,样式表无法工作。如果我按下,悬停或任何按钮,它正在改变,我想它。

有谁遇到过同样的问题,有解决办法吗?

再进一步解释一下。颜色属性工作正常。文字总是红色的,除了我按下按钮,然后它是黑色的。因此,样式表正在使用,但是,只是背景色属性不起作用。

我尝试过不同的风格,比如motif,cde,清洁剂等等,它们总是一样的。

EN

Stack Overflow用户

回答已采纳

发布于 2013-11-01 07:17:37

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

首先,我保留了样式表选项以进行检查。

代码语言:javascript
运行
复制
     QPushButton:checked{
         background-color: green.
     }

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

代码语言:javascript
运行
复制
     palette_red->setColor(window.button->backgroundRole(), QColor(255, 0, 0, 127));
     window.button->setAutoFillBackground(true);
 window.button->setPalette(*palette_red);

我使用切换信号捕捉更改。当按钮切换为真时,样式表开始工作。为了不获得双(绿色对红色)颜色,必须再次关闭setAutoFillBackground。

代码语言:javascript
运行
复制
     window.button->setAutoFillBackground(false);

不切换状态几乎是一样的。我需要打开setAutoFillBackground并再次设置调色板。

代码语言:javascript
运行
复制
     window.button->setAutoFillBackground(true);
     window.button->setPalette(*palette_red);

这是一个解决方案,它有效,但我仍然开放进一步的投入。

票数 5
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19669385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档