PyQt5 QTreeView在检查子节点时自动折叠

问题描述 投票:0回答:1

我在PyQt5中有一个QTreeView,带有可检查的父节点和子节点。我可以展开父节点,并在选择/取消选择父节点时使用回调来选择/取消选择所有子节点。此行为正常。

但是当我取消选择或选择任何子节点时,默认情况下,整个树都将折叠(右图)。理想情况下,无论何时选择或取消选择子节点,我都希望树保持其所在状态。 QTreeView是否有要覆盖的标志,并且没有折叠所有子节点的默认行为?

我到目前为止的尝试:每当单击子节点时,我都会跟踪父项的QModelIndex,然后以该父项的expand作为参数调用QTreeView对象上的QModelIndex函数。但这似乎并不能阻止上述行为。但是,expandAll功能似乎可以正常工作。但这有扩大其他父母不感兴趣的孩子的弊端。如果那是他们的状态,我宁愿让他们崩溃。

有人有输入吗?

enter image description here

python pyqt treeview pyqt5 qtreeview
1个回答
0
投票

技巧是使用模型的索引而不是项目的索引来跟踪所有父节点的展开状态。

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

而不是

item.index()

© www.soinside.com 2019 - 2024. All rights reserved.