为 QListWidget 中的每个项目创建一个信号

Create a signal for each item in QListWidget

我想使用 QListWidget 创建项目列表并将其设置为每次单击 (select) 项目时都会执行不同的方法。我考虑解决这个问题的方法是将列表连接到一个方法,该方法将检查索引,并根据项目索引生成一个连接到不同方法的信号。问题是,如果我没有按钮或其他任何东西,我不知道如何生成此信号。该方法只是检查项目索引。

如有任何建议,我们将不胜感激!

直截了当的想法是将 itemClicked 信号连接到一个插槽,在该插槽中根据单击的索引调用一个方法。在这种情况下,您不需要为每个项目都提供信号。

但是如果你真的想为每个项目创建一个 "clicked" 信号并将其连接到其各自的插槽,你可以这样做:

  1. 子类 QListWidgetItem 并向其添加 clicked 信号。 How to add custom signals

  2. 在填充 QListWidget 时,根据其索引将每个项目与其插槽连接起来。

  3. 将 QListWidget 的 itemClicked 信号连接到一个插槽,它会像这样发出被点击项目的信号:

    def itemClickedSlot(item):  
        item.clicked.emit()