如何在Qt中创建带有复选框的列表

时间:2015-03-19 15:48:33

标签: python qt checkbox pyqt qlistwidget

我试图读取xml文件并使用其中的一些内容填充列表QT ListWidget。每个条目都应该有一个复选框。

在QT中,我创建了列表并添加了一个项目,该项目具有一个复选框,方法是将项目添加到listWidget,然后右键单击它并选择编辑项目>属性>将标志设置为UserCheckable。所以我可以在QT中手动完成。

但是当我读入xml文件来填充ListWidget时,我无法检查这些项目。

import xml.etree.ElementTree as et

xml_file = os.path.join(path, testcase_file)
tree = et.parse(xml_file)
root = tree.getroot()

for testcases in root.iter('testcase'):
    testcase_name = str(testcases.attrib)
    item = self.listWidgetTestCases
    item.addItem(QtGui.QApplication.translate("qadashboard", testcase_name, None))
    # item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
    # item.setCheckState(QtCore.Qt.Unchecked)

这将在ListWidget中创建一个测试用例名称列表。但是,我无法将这些项目添加到复选框中。列表窗口小部件无法识别item.setFlags或ItemIsUserCheckable,因此在上面的示例中注释掉了这两行。

任何提示都非常感激。

谢谢,

约翰。

1 个答案:

答案 0 :(得分:3)

你几乎就在那里:只是你试图让列表小部件可以检查,而不是每个项目。

请改为尝试:

for testcases in root.iter('testcase'):
    testcase_name = QtGui.QApplication.translate(
        "qadashboard", str(testcases.attrib), None)
    item = QtGui.QListWidgetItem(testcase_name, self.listWidgetTestCases)
    item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
    item.setCheckState(QtCore.Qt.Unchecked)