我正在使用PyQt 4.4.
使用一些图片最好显示.所有节点都应该有从0到99的叶子.它们使用canFetchMore()和递增加载fetchMore().但由于某些原因我不知道这只适用于根节点.(图片1)
如果我折叠并展开一个节点,它会加载额外的10个值.(图2和3)
同样奇怪的是,它加载10个值,因为代码每次调用只加载5个fetchMore(),这意味着在代码停止加载更多数据之前会调用2次.
截屏1 http://i27.tinypic.com/ezyic.png 截屏2 http://i32.tinypic.com/2ymunpx.png 截屏3 http://i27.tinypic.com/283zfr.png
我写了一个小例子来演示这个问题,然后运行它python test.py.
http://snipt.org/lLh
有谁知道导致此错误的原因是什么?
我看了Qt源代码(v4.5,虽然我不希望v4.4和v4.5之间有太大的区别)对于QAbstractItemView和QTreeView,我不认为它们支持子节点的增量延迟加载.
QAbstractItemView没有树的概念,所以它只调用fetchMore()最顶层的索引.它呼叫fetchMore()时:
QTreeView还在以下时间调用fetchMore():
fetchMore()使用非根索引调用的唯一时间)expandAll()和collapseAll()我认为最好的解决方案是将QTreeView子类化,使其fetchMore()在适当的位置调用并使用适当的索引.