我创建了一个QGraphicsView,并在其中创建了QGraphicsScene。我在QGraphicsScene中加载了一个像素图。实际上,这是继承的QGraphicsScene,它实现了wheelEvent以便进行放大/缩小功能。缩放功能可根据轮盘的旋转将像素图向上或向下缩放10%。缩放效果很好,但是QGraphicsView大小或QGraphicsScene大小获得尝试的旋转的最大大小的值,而不再居中。例如,如果我使用wso进行缩放以启用滚动条,则如果我进行缩放则仍启用滚动条,并且像素图位于左上角。
有什么建议么?
编辑:QGraphicsView的缩放功能会创建低质量的像素图,这就是为什么我不使用它的原因。我添加了一个缩放的像素图,并在每次旋转时再次对其进行缩放并投影到GraphicsView。但是,如前所述,GraphicsView或QGraphicsScene的大小存在调整大小的问题。
最佳答案
很长一段时间后,我找到了解决方案。问题在于场景没有遵循像素图的大小。例如,当我滚动并创建一个大的像素图以便需要滚动条时,如果我滚动并创建了一个小像素图,则滚动条仍然存在,导致场景的大小没有改变。但是我找到了解决方案,方法是在添加新的像素图后在场景中设置一个rect。因此,在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/