PyQt5 QTreeView автоматически сворачивается при проверке дочернего узла - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть QTreeView в PyQt5 с проверяемыми родительскими и дочерними узлами. Я могу расширить родительский узел и иметь обратные вызовы для выбора / отмены выбора всех дочерних узлов при выборе / отмене выбора родительского узла. Такое поведение отлично работает.

Но когда я отменяю выбор или выбираю любой из дочерних узлов, все дерево по умолчанию рушится (рисунок справа). В идеале я хотел бы, чтобы дерево поддерживало его состояние, когда бы ни был выбран или отменен выбор дочернего узла. Есть ли флаг для QTreeView, чтобы переопределить и не иметь этого поведения по умолчанию для свертывания всех дочерних узлов?

Моя попытка до сих пор: Я отслеживаю QModelIndex изродительский элемент всякий раз, когда щелкается дочерний узел, а затем вызывается функция expand объекта QTreeView с аргументом QModelIndex этого родительского элемента в качестве аргумента. Но это, кажется, не мешает поведению, упомянутому выше. Однако функция expandAll работает нормально. Но это имеет обратную сторону в расширении детей других родителей, которые не представляют интереса. Я бы предпочел держать их свернутыми, если бы это было их состояние.

Есть ли у кого-нибудь какие-либо данные?

enter image description here

1 Ответ

0 голосов
/ 02 октября 2019

Хитрость заключалась в том, чтобы использовать индекс модели вместо индекса элемента, чтобы отслеживать расширенные состояния всех родительских узлов.

model.index(item.index().row(), 0)

вместо

item.index()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...