本帖最后由 板栗壳 于 2018-6-26 16:29 编辑
最近想实现一个功能:就是左击ComboBox触发一个事件 我的代码是这么写的: class SerialClass(QtWidgets.QMainWindow, Ui_serialMainWindow):
def __init__(self, parent=None):
super(SerialClass, self).__init__(parent)
self.setupUi(self)
# 鼠标按下事件
def mousePressEvent(self, *args, **kwargs):
print(args,kwargs) 1、鼠标单击事件是在鼠标单击QtWidgets的时候触发这个事件,单击窗体的时候的确调用这个鼠标点击事件了 2、单击Ui_serialMainWindow里面的ComboBox并不会触发这个事件。
百度一些是这么说的:那么因为继承的关系:所以我又继承了QtWidgets.QComboBox 实际测试也是无效呢? --当然因为我还不明白这个原理。 那么我就觉得这个重载的mousePressEvent事件在这个类里面只对这个窗体有效了,对窗体里面的组件是无效的。
2、方式二: 我从写了一个类,类继承于QtWidgets.QComboBox 然后我传递一个参数进去,就是这个QComboBox,然后重载一个鼠标点击事件。 当然也是没有用的。 class SerialComponent(QtWidgets.QComboBox):
def __init__(self, parent=None,btn=''):
super(SerialComponent, self).__init__(parent)
# self.setupUi(self)
self.btn = btn
self.initUI()
# 鼠标按下事件
def mousePressEvent(self, *args, **kwargs):
print(args,kwargs)
def initUI(self):
global g_serHelpList
for i in g_serHelpList:
self.btn.addItem(i)
self.btn.addItem('hafdh') 那么问题就来了。 问:如何使得我按下这个ComboBox也能触发相对应的事件呢? 望解答。
|