def _update_checkboxes(self, item: QTreeWidgetItem, column: int):
if column != 0:
return
new_check_state = item.checkState(0)
self._set_check_state_to_tree(item, new_check_state)
while True:
item = item.parent()
if item is None:
break
has_checked_children = False
has_partially_checked_children = False
has_unchecked_children = False
for i in range(item.childCount()):
state = item.child(i).checkState(0)
if state == Qt.Checked:
has_checked_children = True
elif state == Qt.PartiallyChecked:
has_partially_checked_children = True
else:
has_unchecked_children = True
if not has_partially_checked_children and not has_unchecked_children:
new_state = Qt.Checked
elif has_checked_children or has_partially_checked_children:
new_state = Qt.PartiallyChecked
else:
new_state = Qt.Unchecked
item.setCheckState(0, new_state)
self._update_selection_label()
评论列表
文章目录