我的QTreeWidget遇到了性能问题。 它们的值会定期更新(每100毫秒)。要对价值进行处理并显示它需要一个不可忽视的时间。因此,数据越多,软件运行的速度就越慢。
当然,我可以改进很多方面,但我认为更清楚的是在不需要时不处理数据。
所以问题是: 我如何知道屏幕中显示的区域中有哪些项目?
我试图检查可见性(每个项目和 visibilityRegion ,它会返回整个树。不要那样。 我试图从小部件中获取矩形( frameReqt ),结果与之前相同。
当然,如果我不更新整个模型,一旦用户滚动,曾经隐藏的其他值将不在数据中。但这是另一个问题。
答案 0 :(得分:3)
如果您需要在树状视图中显示大量数据,则应该使用与Qt Model/View system关联的QTreeView:a subclass of QAbstractItemModel。对于您的用例,这是一个更好的选择,据我所知,它已经实现了一个智能更新系统(仅在可显示的范围内询问模型中的项目)。
例如,考虑从模型类重新实现fetchMore()或canFetchMore()方法。