如何获取Qt QListWidget中列出的已检查项目

Joh*_*ohn 3 python pyqt qlistwidget checked

我已经用一个项目列表填充了一个QListWidget,并添加了一个复选框,使所有内容都未选中.

for td in root.iter('testdata'):
    test_data = td.get('ins')
    item = QtGui.QListWidgetItem(test_data, self.listWidgetLabels)
    item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
    item.setCheckState(QtCore.Qt.Unchecked)
Run Code Online (Sandbox Code Playgroud)

然后,用户单击QListItem中的一些项目,然后单击gui上的"生成文件"按钮.

self.pushButtonGenerateFile.clicked.connect(self.generate_file)
Run Code Online (Sandbox Code Playgroud)

我想获得所有已检查的QListItem的列表.

def generate_driver(self):
    test = self.listWidgetLabels.selectedItems()
    items = []
    checked_items = []
    for index in range(self.listWidgetLabels.count()):
        items.append(self.listWidgetLabels.item(index))

        for x in self.listWidgetLabels.selectedItems():
            checked.append(x.text())
    for i in checked:
        print("Checked Items: {0}".format(i))
Run Code Online (Sandbox Code Playgroud)

上面的内容获取列表中的selectedItem.我试过getState(),getChecked(),但QListWidget项不存在.

任何线索都非常感谢.

谢谢,

约翰.

svl*_*sov 5

您需要检查是否checkState确实Qt.Checked:

for index in range(self.listWidgetLabels.count()):
    if self.listWidgetLabels.item(index).checkState() == Qt.Checked:
        checked_items.append(self.listWidgetLabels.item(index))
Run Code Online (Sandbox Code Playgroud)