Мое приложение написано с PyQt5. У меня есть QTreeWidget с некоторыми элементами:
Parent
--Child 1
--Child 2
Я хочу динамически добавлять и удалять флажки для дочерних элементов. Мне удалось добавить флажки с
item.setFlags(item.flags() | 16)
и
item.setCheckState(0, QtCore.Qt.Checked)
Но у меня есть 2 проблемы:
Я не могу снять эти флажки. Я попытался сбросить флаги, но флажок все еще там, только отключен. Я также не могу использовать таблицы стилей, потому что я не могу .setStyleSheet для одного treeWidgetItem. Как я могу удалить его?
, и я не хочу этого.
Минимальный пример:
from PyQt5.QtWidgets import *
from PyQt5 import QtCore
app = QApplication([])
label = QTreeWidget()
label.show()
parent = QTreeWidgetItem(label)
parent.setText(0, "Parent")
child1 = QTreeWidgetItem(parent)
child1.setText(0, "child1")
child2 = QTreeWidgetItem(parent)
child2.setText(0, "child2")
child1.setFlags(child1.flags() | QtCore.Qt.ItemIsUserCheckable)
child1.setCheckState(0, QtCore.Qt.Checked)
child1.setFlags(child1.flags() & ~QtCore.Qt.ItemIsUserCheckable)
app.exec_()
Смена флага ItemIsUserCheckable обратно не снимает флажок.