我正在尝试创建一种树形小部件,它实质上允许用户查看各种数据细分,并具有删除某些项的选项。为了做到这一点,我希望每个顶级项目和每个子级都与复选框相关联,以便用户可以选择要删除哪些顶级项目(因此删除该顶级项目的所有子项)或要删除哪些特定子项。为了给您更好的理解,我创建了一个示例,其中[x]表示已选中的复选框,[ ]表示未选中的复选框:
>Beverages Allowed in Stadium [ ]
Soda [ ]
Water [ ]
Tea [ ]
Spirits [X]
Ale [ ]
>Tickets [X]
Row A [X]
Row B [X]
Row C [X]
Lawn [X]
有什么建议可以实现这个吗?我不知道是否会影响难度,但我已经为复选框分配了一个单独的列。
Qt.ItemIsTristate
标志并添加parent.setCheckState(0, Qt.Unchecked)
(再次强调,需要复选框状态才能显示)。这将把复选框添加到父级。但是,通过移除 Tristate 标志,你会失去自动选择和取消子项的功能。 - Andyroot = treeWidget.invisibleRootItem()
for i in range(root.childCount()):
item = root.child(i)
if item.checkState(0, QtCore.Qt.Checked):
# 进行某些操作或添加到列表中
(PS:我不知道如何格式化它使其看起来漂亮) - Itamar Bitton