用CSS设计QPushButton样式?

时间:2009-11-11 00:22:20

标签: css qt button pyqt4

我正在尝试创建一个只有图标和常量背景颜色的QPushButton。 这样我就可以在用户点击它时换出图标,而没有任何其他明显的效果(这是一个上卷/下滚功能)。我在样式表中添加了这样的条目:

QPushButton.ToggleButton {
    background-color: #8af; 
}

并设置按钮的类以匹配,这确实给了我想要的外观,除了当我点击它时背景颜色变为浅蓝色,这是我不想要的。我错过了什么?

编辑:我想我应该提到我正在使用Qt 4.5和PyQt 4.6来做到这一点......

4 个答案:

答案 0 :(得分:1)

我知道人们喜欢使用样式表,但在这种情况下,我认为制作自定义按钮同样容易。定义一个继承自QAbstractButton的类,并覆盖paint()方法。在paint方法中,使用所需的背景颜色填充rect,然后在顶部绘制当前图标。如果您想要按钮周围的边框,可能会稍微复杂一点,但不是很多。

或者,您还可以查看QPalette的角色,特别是QPalette::LightQPalette::Midlight,可能会在按下时调整按钮的颜色。

答案 1 :(得分:1)

答案

尝试使用QObject :: setObjectName为该按钮指定一个ID,然后使用#idSelector应用该样式?

在Python中,代码可能看起来像这样:

button = QPushButton(self)
button.setObjectName("ToggleButton")

和这样的样式表:

#ToggleButton:pressed {
  background-color: #8af;
}

进一步阅读

答案 2 :(得分:0)

我猜你做background-color: #8af !important;太明显了,所以我认为这样做不行。如果你还没有这样做,那值得一试。

否则,如this question中所述,您可以设置特定的状态。尝试为按下状态设置相同的背景颜色:

QPushButton.ToggleButton:pressed { background-color: #8af; }

对不起,如果我误解了。希望有所帮助。

答案 3 :(得分:0)

在Qt设计器中打开按钮的样式表并尝试:\ n QPushButton:pressed { image: url(/path/to/your/file/fileName.png); }