PyQt的:激活QListWidget项目
问题描述:
我想激活从listWidget一个项目,那就是ChildWidget的一部分,在使用parentWidget事件过滤器。下面是相关parentWidget部分代码:PyQt的:激活QListWidget项目
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
不工作的命令。是否有其他方式激活项目和触发项目激活的信号发送?
答
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)
好了,可以请你解释什么,应该怎么办?我试过self.w.listWidget.itemActivated.emit(无)。它发送信号,但函数klik没有收到参数“item”。我还去哪里? – speedyTeh 2013-04-28 21:41:02
因为你写了“无”作为参数......把合适的人。 – LtWorf 2013-04-28 22:13:42
我做到了!的行是:self.w.listWidget.itemActivated.emit(self.w.listWidget.currentItem()) – speedyTeh 2013-04-28 23:11:11