【问题标题】:PyQt: Activate QListWidget ItemPyQt:激活 QListWidget 项
【发布时间】:2013-04-22 11:39:19
【问题描述】:

我想使用 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

不工作。还有其他方法可以激活物品并触发物品激活信号发送吗?

【问题讨论】:

    标签: python qt pyqt signals qlistwidget


    【解决方案1】:
    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)
    

    【讨论】:

    • 好的,你能解释一下我到底应该怎么做吗?我试过 self.w.listWidget.itemActivated.emit(None)。它发送信号,但函数 klik 没有接收到参数“item”。我还有什么地方可以拧?
    • 我成功了!该行是:self.w.listWidget.itemActivated.emit(self.w.listWidget.currentItem())
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 2023-03-19
    • 2020-10-16
    • 2017-05-19
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    相关资源
    最近更新 更多