1

我想使用 parentWidget 中的事件过滤器从作为 ChildWidget 的一部分的 listWidget 中激活一个项目。以下是相关 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

不工作。是否有其他方法来激活项目并触发要发送的项目激活信号?

4

1 回答 1

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

不能调用,必须直接调用绑定的过程。要发出信号,您必须使用 emit。

q.itemActivated.emit(None)
于 2013-04-28T21:27:08.060 回答