代码之家  ›  专栏  ›  技术社区  ›  Mathieson

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

  •  0
  • Mathieson  · 技术社区  · 11 年前

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

    即使我在代理模型中重写rowCount方法,它似乎只调用一次(根项)。此后,它再也不会被调用。

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

    让我怀疑是否有可能操纵代理中的层次结构(而不仅仅是将其压平)。

    1 回复  |  直到 11 年前
        1
  •  0
  •   Mathieson    11 年前

    据我所知,QAbstractProxyModel中的rowCount方法在PySide中存在错误。我为了这件事已经把头撞在墙上好长时间了。还没弄清楚到底发生了什么。

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

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