我创建了一个 QGraphicsView 并在其中创建了一个 QGraphicsScene。我在 QGraphicsScene 中加载像素图。实际上它是一个继承的QGraphicsScene,它实现了一个wheelEvent以实现放大/缩小功能。缩放功能根据滚轮的旋转将像素图向上或向下缩放 10%。缩放工作正常,但是 QGraphicsView 大小或 QGraphicsScene 大小获取尝试的旋转的最大大小的值,并且不再居中。例如,如果我使用启用了滚动条的 wso 来放大它,那么如果我缩小它,滚动条仍然会启用并且像素图位于左上角。 有什么建议吗?
编辑:QGraphicsView的缩放功能创建了低质量的像素图,这就是我不使用它的原因。我添加了一个缩放的像素图,并且在每次旋转时我都会再次缩放它并投影到 GraphicsView。然而,如前所述,GraphicsView 或 QGraphicsScene 的大小存在调整大小问题。
最佳答案
经过很长一段时间,我找到了解决方案。问题是场景不符合像素图的大小。例如,当我滚动并创建一个大的像素图,以便需要滚动条时,如果我滚动并创建一个小的像素图,滚动条仍然在那里,导致场景的大小没有改变。不过,我通过在添加新的像素图后在场景中设置一个矩形找到了解决方案。因此,在wheelEvent (self, event)
函数中,通过self.clear()
清除场景并添加新的缩放像素图后,场景的大小需要也要改变。为此,我使用了以下命令,其中 self.__size
是缩放后的像素图的新大小。
self.setSceneRect(QtCore.QRectF(0.0, 0.0, self.__size.width(), self.__size.height()))
关于python - QGraphicsView 在像素图缩放后不会调整大小,而像素图不再居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23246246/