编程语言
首页 > 编程语言> > python-使用Qt样式表更改状态更改图标

python-使用Qt样式表更改状态更改图标

作者:互联网

我正在尝试为我的应用程序支持主题设置,但遇到一个问题,我必须根据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();

标签:qpushbutton,python,qt,pyqt,qstyle
来源: https://codeday.me/bug/20191012/1901823.html