pyqt5:重写QComboBox控件

pyqt5:重写QComboBox控件

需求:pyqt5中的QComboBox类在单击组合框时不像一般Button类,可以发出clicked()信号,为了实现类似功能,需要重写QComboBox控件和其中的QMousePressEvent事件,并且需要自定信号。
实现:
新建一个.py文件,名为MyComboBox.py,代码如下:

from PyQt5 import QtGui
from PyQt5.Qt import *
from PyQt5.QtCore import *


class MyComboBoxControl(QComboBox):
    clicked = pyqtSignal()      # 自定义信号

    def __init__(self, Parent=None):
        super(MyComboBoxControl, self).__init__(Parent)     # 调用父类的初始化方法

    def mousePressEvent(self, event: QtGui.QMouseEvent) -> None:        # 重写鼠标按下事件
        if event.button() == Qt.LeftButton:     # 当鼠标左键单击时
            self.clicked.emit()     # 发射信号
        QComboBox.showPopup(self)       # 弹出下拉框


然后在主处理文件中,将信号与槽函数连接起来:

    def EventTrigger(self):
		self.comboBox_3.clicked.connect(self.EnumPrinterName)       # 连接左键单击时的处理函数

最后,在使用QtDesigner生成的UI文件中,将原始的QComboBox类替换成重写的MyComboBox类:
改之前:

self.comboBox_3 = QComboBox(self.groupBox_4)

改之后:

self.comboBox_3 = MyComboBoxControl(self.groupBox_4)

猜你喜欢

转载自blog.csdn.net/qq_28255733/article/details/115553233