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 に答える