检测当前是否正在查看图形项目

时间:2019-06-11 22:26:22

标签: qgraphicsview qgraphicsscene qgraphicsitem

我想使用QGraphicsScene来容纳大量项目。

这些项目基本上是瓷砖的占位符。

虽然QGraphicsView和Scene一起可以很好地有效管理视图中的内容,但是对于我来说,为所有需要加载的图块加载数据仍然很昂贵。

因此,我希望能够确定当前正在查看哪些项目(通过同一场景的一个或多个视图),而又不能缩小以进行渲染,并为这些项目加载数据,或者卸载任何看不见的数据。

有人能用优雅的解决方案来确定场景的哪些部分在使用吗?

编辑: 我认为以下代码应确定查看哪些项目:

port_rect = self.viewport().rect()
scene_rect = self.mapToScene(port_rect).boundingRect()
items_in_view = self.scene.items(scene_rect)

诀窍就是

  1. 跟踪项目何时超出视野(特别是考虑到多个视图可能指向重叠)

  2. 选择GraphicsView事件以运行对数。

0 个答案:

没有答案