Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt5 QTreeView在检查子节点时自动折叠_Python_Pyqt_Treeview_Pyqt5_Qtreeview - Fatal编程技术网

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

Python PyQt5 QTreeView在检查子节点时自动折叠,python,pyqt,treeview,pyqt5,qtreeview,Python,Pyqt,Treeview,Pyqt5,Qtreeview,我在PyQt5中有一个QTreeView,具有可检查的父节点和子节点。我可以展开父节点,并在选择/取消选择父节点时回调以选择/取消选择所有子节点。这种行为很有效 但是,当我取消选择或选择任何子节点时,默认情况下整个树都会崩溃(右图)。理想情况下,无论何时选择或取消选择子节点,我都希望树保持它所处的状态。是否有要覆盖的QTreeView标志,并且没有折叠所有子节点的默认行为 我迄今为止的尝试: 每当单击子节点时,我都会跟踪父项的QModelIndex,然后调用QTreeView对象上的expand

我在PyQt5中有一个
QTreeView
,具有可检查的父节点和子节点。我可以展开父节点,并在选择/取消选择父节点时回调以选择/取消选择所有子节点。这种行为很有效

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

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

有人有什么意见吗


诀窍是使用模型的索引而不是项的索引来跟踪所有父节点的扩展状态

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

而不是


item.index()

查看带有QStandardItemModel的QTreeView,如果需要帮助,请提供