我想使用QGraphicsScene来容纳大量项目。
这些项目基本上是瓷砖的占位符。
虽然QGraphicsView和Scene一起可以很好地有效管理视图中的内容,但是对于我来说,为所有需要加载的图块加载数据仍然很昂贵。
因此,我希望能够确定当前正在查看哪些项目(通过同一场景的一个或多个视图),而又不能缩小以进行渲染,并为这些项目加载数据,或者卸载任何看不见的数据。
有人能用优雅的解决方案来确定场景的哪些部分在使用吗?
编辑: 我认为以下代码应确定查看哪些项目:
port_rect = self.viewport().rect()
scene_rect = self.mapToScene(port_rect).boundingRect()
items_in_view = self.scene.items(scene_rect)
诀窍就是
跟踪项目何时超出视野(特别是考虑到多个视图可能指向重叠)
选择GraphicsView事件以运行对数。