继承QCommstyle实现QPushbutton的点击、悬浮、按下和check的样式
时间: 2024-03-10 16:43:33 浏览: 73
QT继承QPushButton的动态按钮及信号槽设定
5星 · 资源好评率100%
可以通过以下方式继承QCommonStyle实现QPushbutton的样式:
```python
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class CustomButtonStyle(QCommonStyle):
def drawControl(self, element, option, painter, widget=None):
if element == QStyle.CE_PushButton:
if option.state & QStyle.State_Sunken:
# 按下状态
painter.drawPixmap(option.rect, QPixmap("button_pressed.png"))
elif option.state & QStyle.State_MouseOver:
# 悬浮状态
painter.drawPixmap(option.rect, QPixmap("button_hover.png"))
else:
# 普通状态
painter.drawPixmap(option.rect, QPixmap("button_normal.png"))
elif element == QStyle.CE_CheckBox:
# check状态
if option.state & QStyle.State_On:
painter.drawPixmap(option.rect, QPixmap("check_on.png"))
else:
painter.drawPixmap(option.rect, QPixmap("check_off.png"))
else:
super().drawControl(element, option, painter, widget)
```
在上面的代码中,我们通过继承QCommonStyle类并重写其drawControl()方法,实现了QPushbutton的点击、悬浮、按下和check的样式。其中,我们通过option.state属性判断按钮的状态,并根据状态绘制不同的图片。
最后,我们可以将自定义的样式应用到QPushbutton上:
```python
button = QPushButton("Button")
button.setStyle(CustomButtonStyle())
```
这样,我们就可以得到一个自定义样式的QPushbutton了。
阅读全文