按下时更改 QPushButton 颜色

Posted

技术标签:

【中文标题】按下时更改 QPushButton 颜色【英文标题】:Changing QPushButton Color when Pressed 【发布时间】:2011-02-08 00:41:18 【问题描述】:

有没有办法通过修改 QPalette 对象来改变按下的 QPushButton 的背景颜色?我意识到它可以用样式表来完成,但想通过修改 QPalette 来完成它。类似于在未按下按钮时更改背景颜色的方式:

QPushButton myButton;
QPalette p(myButton.palette());

p.setColor(QPalette::Button, QColor("#ffffff"));
myButton.setPalette(p);

【问题讨论】:

【参考方案1】:

只需将样式表添加到 qbushbutton 本身或其父 qwidget:

qwidget.setStyleSheet("QPushButton:checked  background-color: red; ")

这将在选中 QPushButton 时将背景颜色设置为红色。

【讨论】:

【参考方案2】:

连接到 QPushButton 的 pressed() 信号并使用所需颜色更新调色板,然后连接到 released() 信号并将颜色切换回旧颜色。应该这样做。

您可能希望在设置颜色后运行update(),或者在极端情况下运行repaint()。

【讨论】:

【参考方案3】:

连接到按钮的pressed 信号并将调色板设置在连接的插槽中。您可能需要致电 repaint() 强制立即更新。

【讨论】:

【参考方案4】:

您可以在按下按钮时为按钮设置样式表。here is the Example 告诉您如何为按钮设置样式表.. 但在您的情况下,您需要有两个不同的样式表,一个是按钮按下时,类似的是发布后,您应该使用其他样式表进行重置。

【讨论】:

以上是关于按下时更改 QPushButton 颜色的主要内容,如果未能解决你的问题,请参考以下文章

在悬停并按下时更改 QPushButton 图标

在按下时查看:按下时更改背景颜色?如何显示正在按下视图?

按下时更改操作栏按钮的背景颜色

按下时更改按钮文本颜色

Flutter 2.0 - 按下时如何更改 TextButton 的初始颜色?

ListItem 应在按下时更改背景颜色、文本和图像的颜色