如何获得QGraphicsView的可见场景矩形?

Goo*_*ofy 1 qt qgraphicsview

我正在显示构建为 QGraphicsPixmapitem 项目矩形的地图(每个项目代表一个地图图块)。因为我的地图非常大(大约 30 MB 的 PNG 文件),我希望能够按需加载像素图,仅当它们在 QGraphicsView 中对用户可见并在它们变得不可见时卸载。

有没有办法找出可见的场景矩形?

Tri*_*ion 5

这为您提供了可见的场景矩形:

sceneRect = graphicsView.mapToScene(graphicsView.rect()).boundingRect()
Run Code Online (Sandbox Code Playgroud)

如果存在剪切或旋转变换,它会为您提供可见场景区域的边界矩形。如果您没有这样的转换(仅平移或缩放),则返回的矩形就是准确的场景区域。

现在,对于在场景中有效地显示巨大的瓷砖地图的真正问题是什么?您可以在后台加载图块,然后首先评估您的 Qt 框架是否尚未针对可见范围之外的大像素图进行优化。30 MB 听起来也没有太大以至于无法放入内存。