0

我有一个 python,它显示一个 GUI 应用程序,其中包括处理项目的qlistwidget ,用户可以在其中通过检查它们来选择这些项目,而不是使用

itemSelectionChanged.connect.

我希望一旦用户检查了所需的项目,系统就会保存它们,以便在 CHECKED 项目上运行另一个功能。

如下图:

在此处输入图像描述

这里什么都没有发生。

到目前为止,当用户选择它们时,我能够保存选中的项目。就像这样。

在此处输入图像描述

这里现在显示的结果是:

Checked items:  event_type, number_person

QlistWidget:

   self.header_list = QtWidgets.QListWidget(self)
     self.header_list.setObjectName("listWidget")
     self.header_list.setMaximumWidth(120)
     self.header_list.setSelectionMode(QAbstractItemView.MultiSelection)
     self.header_list.itemSelectionChanged.connect(self.selectionChanged)
     self.horizontallLayout.addWidget(self.header_list)

selectionChanged 功能:

def selectionChanged(self):
    checked = []
    for row in range(self.header_list.count()):
        item = self.header_list.item(row)
        if item.checkState():
            checked.append(item)
    print("Checked items: ", ", ".join(i.text() for i in checked))
    self.checked = [i.text() for i in checked]

那么什么是可以替换itemSelectionChanged的​​事件侦听器,以便在仅检查项目而不选择它们时保存结果。

4

1 回答 1

0

项目视图的检查状态存储在模型数据中,因此当状态更改时,数据也会相应更改。幸运的是 QListWidget 已经提供itemChanged(item)

每当 item 的数据发生更改时,都会发出此信号。

这显然意味着每当更改任何项目时都会发出信号,并且由于您无论如何都要检查所有项目,因此您可以保留当前函数并将其连接到itemChanged而不是itemSelectionChanged.

于 2020-09-17T09:42:51.180 回答