我正在尝试为我的应用程序支持主题设置,但遇到一个问题,我必须根据QPushButton的状态(默认,悬停,按下等)更改图标.这是我用来设置QPushButton图标的内容:
QPushButton#playButton {
qproperty-icon: url(":/light/icons/play_light.png");
}
由于悬停状态使用的背景需要深色主题的图标,因此我尝试使用以下方法将其更改为其他主题:
QPushButton#playButton:hover {
qproperty-icon: url(":/dark/icons/play_dark.png");
}
当我这样做时,play_light.png会按原样显示,但状态更改时不会更改为play_dark.png.
在我的Python代码中,播放按钮在播放时变为停止按钮,因此,按照我的风格,我使用自定义属性将其设置为该图标:
QPushButton#playButton[isPlaying="true"] {
qproperty-icon: url(":/light/icons/stop_light.png");
}
这对我来说也不会改变.因此,我在网上找到了一些代码来重置按钮的样式,如下所示:
self.ui.playButton.setProperty('isPlaying', not isEnable)
self.ui.playButton.setStyle(qApp.style())
我不想针对每个状态更改的每个按钮使用此解决方法.你们以前遇到过这个问题吗?
感谢您的宝贵时间.
解决方法:
设置qApp.style()并不是一个好主意.试试看(从C转换):
button->style()->unpolish(button);
button->style()->polish(button);
button->update();