题
我正在使用PYQT 4.4。
最好使用一些图片显示。所有节点的叶子都应从0到99。 canFetchMore()
和 fetchMore()
. 。但是由于某种原因对我来说未知,这仅适用于根节点。 (图片1)
如果我崩溃并扩展节点,它将加载额外的10个值。 (图2和3)
这也很奇怪,它加载了10个值,因为代码每次调用仅加载5个值 fetchMore()
, ,这意味着在代码停止加载更多数据之前被调用2次。
我写了一个小例子来证明问题,只需使用它 python test.py
.
http://snipt.org/llh
有人知道是什么原因导致此错误?
解决方案
我看了QT源(v4.5,尽管我期望v4.4和v4.5之间的差异并不多),而QABSTRACTITEMVIEW和QTREEVIEW,我不认为它们支持子节点的增量懒惰加载。
qabtractiTemView没有树的概念,所以只会调用 fetchMore()
在最高索引上。它打电话 fetchMore()
什么时候:
- 几何形状已更新
- 滚动条移动
- 行插入
- 当前项目由于自动滚动拖放操作而更改
QTREEVIEW另外调用 fetchMore()
什么时候:
- 扩展项目(这本质上是唯一一次调用的时间
fetchMore()
带有非根指数) - 视图的布局需要重新使用,例如
expandAll()
和collapseAll()
我认为最好的解决方案是子类Qtreeview呼叫 fetchMore()
在适当的位置和适当的索引。
不隶属于 StackOverflow