如何在QAbstractProxyModel中重新排列树的层次结构?

时间:2015-03-23 04:43:05

标签: qt pyqt pyside

如何在代理模型中重新安排我的层次结构?

即使我在代理模型中覆盖了我的rowCount方法,它似乎只调用一次(对于根项)。之后再也不会再被召唤了。

我发现在调用mapToSource函数映射索引之后,我的主模型中的rowCount方法被调用而不是代理模型中的方法。如果我在主模型中更改我的层次结构以匹配我的代理,那么它也将在代理中绘制子项。

让我想知道是否甚至可以操纵代理中的层次结构(除了展平它之外)。

1 个答案:

答案 0 :(得分:0)

据我所知,QAbstractProxyModel中的rowCount方法在PySide中被窃听。在这个问题上,我长时间一直撞在墙上。避风港能够弄清楚到底发生了什么。

我刚刚实现了hasChildren方法,因为我记得发现了一些关于它的优化方法,因为rowCount很重,它只是强制标记你的项目,因为它旁边需要一个下拉图标。无论如何,测试它(实际上只是直接复制到我的rowCount方法),我得到了我的下拉图标!

点击下拉菜单,果然我得到了我的孩子节点。如果我注释掉hasChildren方法,并且没有做任何其他更改,我会回到它不再工作(即使rowCount已实现且工作正常)。