我想使用parentWidget中的事件过滤器从listWidget激活项目,该项目是ChildWidget的一部分。以下是相关parentWidget代码的一部分:
self.w = ChildWidget()
def eventFilter(self, source, event):
if event.type() in (QtCore.QEvent.MouseButtonPress,
QtCore.QEvent.MouseButtonDblClick):
if event.button() == QtCore.Qt.LeftButton:
self.w.listWidget.itemActivated
并在ChildWidget中:
self.listWidget.itemActivated.connect(self.klik)
if item.data(Qt.UserRole).toPyObject():
mp3=item.data(Qt.UserRole).toPyObject()
playsnd("/home/pi/Desktop/komunikator/Recenice/pekara/"+mp3)
事件过滤器工作正常,只需命令
self.w.listWidget.itemActivated
无效。是否有其他方式激活项目和触发项目激活信号发送?
答案 0 :(得分:2)
In [9]: q.itemActivated
Out[9]: <bound signal itemActivated of QListWidget object at 0x1d13560>
你没有打电话。
但我们试着打电话给它。
In [10]: q.itemActivated()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-10-3602f33f377a> in <module>()
----> 1 q.itemActivated()
TypeError: native Qt signal is not callable
您无法调用它,您必须直接调用绑定过程。要发出信号,你必须使用发射。
q.itemActivated.emit(None)