我创建了动态加载模型,为修改后的 qTreeView 提供数据。一切似乎都运行良好。直到我意识到有时 GUI 会“等待”某些东西。它显示我的模型的 fetchMore 不时被调用。我发现在 QAbstractItemView(大多数视图的基类)中运行了“fetchMoreTimer”
- rowInserted AND/OR updateGeometires 被调用并启动计时器。
- 当计时器滴答作响时,它会触发 timerEvent
- timerEvent 导致 doItemsLayout()
- doItemsLayout() 询问 canFetchMore(它确实可以!我正在动态加载数百万行),因此模型获取更多。
一段时间后,计时器再次滴答作响......导致treeView几乎无休止地重新绘制(在主线程中作为所有GUI操作)。这可以防止例如内存昂贵的加载/保存。(保存与数百万行数据相关的加载数据。)
有人可以建议如何禁用 fetchMoreTimer(当然是在 QAbstractItemViewPrivate :/)我尝试子类化 timerEvent。但不幸的是,大约有 6 个不同的计时器触发了该事件,我不知道如何找出可以忽略的。
一些建议?