我正在尝试使用 beginMoveRows / endMoveRows 使持久性索引保持不变,但有时扩展的状态标志/持久性索引会重复,它们不应该存在。
有相当多的代码,所以我将完成我认为我告诉机器要做的事情:
有一个方法, sortChildrenOf(item) 可以完成所有的魔法。
- 从 item 中查找子项并以每个子项作为参数调用 sortChildrenOf
- 保存旧订单
- 快速排序儿童
- 找出旧秩序和新秩序的差异
- 对于每个差异:
- 移动行
- 应用更改
- endMoveRows
当有 2 个级别时,一切都运行良好,但是当我输入“长”数据树时,持久索引会损坏。
树中的数据是从网络更新的,但实际更新是在 gui 线程中完成的。
是否有一些我应该做的确切顺序?我可能忘记继承一些导致这种情况的方法吗?
我已经实现了这些方法: - 数据 - 标志 - getItem - 索引 - 父级 - setData
编辑:忘了提,我在主要的 sortChildrenOf 调用之前和之后得到了发出 layoutAboutToBeChanged 和发出 layoutChanged 。