我正在使用PYQT 4.4。

最好使用一些图片显示。所有节点的叶子都应从0到99。 canFetchMore()fetchMore(). 。但是由于某种原因对我来说未知,这仅适用于根节点。 (图片1)

如果我崩溃并扩展节点,它将加载额外的10个值。 (图2和3)

这也很奇怪,它加载了10个值,因为代码每次调用仅加载5个值 fetchMore(), ,这意味着在代码停止加载更多数据之前被调用2次。

Screenshot 1 Screenshot 2 Screenshot 3

我写了一个小例子来证明问题,只需使用它 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() 在适当的位置和适当的索引。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top