Python QGraphicsView不';t在pixmap缩放后调整大小,而pixmap不再居中

Python QGraphicsView不';t在pixmap缩放后调整大小,而pixmap不再居中,python,pyqt,qgraphicsview,qgraphicsscene,qpixmap,Python,Pyqt,Qgraphicsview,Qgraphicsscene,Qpixmap,我创建了一个QGraphicsView,其中有一个QGraphicsCenter。我在qgraphicscene中加载一个pixmap。实际上,它是一个继承的QGraphicscene,它实现了一个wheelEvent,以实现放大/缩小功能。缩放功能根据控制盘的旋转向上或向下缩放pixmap 10%。缩放工作正常,但是QGraphicsView大小或QGraphicsCenter大小会获取尝试的旋转的最大大小值,不再居中。例如,如果我使用启用滚动条的wso将其放大,那么如果我将其缩小,滚动条仍将

我创建了一个QGraphicsView,其中有一个QGraphicsCenter。我在qgraphicscene中加载一个pixmap。实际上,它是一个继承的QGraphicscene,它实现了一个wheelEvent,以实现放大/缩小功能。缩放功能根据控制盘的旋转向上或向下缩放pixmap 10%。缩放工作正常,但是QGraphicsView大小或QGraphicsCenter大小会获取尝试的旋转的最大大小值,不再居中。例如,如果我使用启用滚动条的wso将其放大,那么如果我将其缩小,滚动条仍将启用,并且pixmap将位于左上角。 有什么建议吗


编辑:QGraphicsView的缩放功能创建了一个低质量的pixmap,这就是我不使用它的原因。我添加了一个缩放的pixmap,每次旋转时我都会再次缩放它并投影到GraphicsView。但是,GraphicsView或QGraphicscene的大小存在前面提到的大小调整问题。

不要将
QGraphicscene子类化。
子类化
QGraphicsView
以获取控制盘事件,并相应地更改视图转换。使用在graphicsview上设置世界变换

这是正确的做法。从概念上讲,场景中的对象不会更改大小。是您的视图在改变,您正在放大/缩小。这是摄影机在移动,而不是对象在增长/收缩

根据缩放因子,可以在项目的“绘制”方法中使用绘制高分辨率或低分辨率版本的图像


在使用细节层次的地方有一个很好的解决方案。

经过很长时间,我找到了解决方案。问题是,场景没有按照pixmap的大小显示。例如,当我滚动并创建了一个大的pixmap,因此需要滚动条时,如果我滚动并创建了一个小的pixmap,滚动条仍然存在,因为场景的大小没有改变。然而,我在添加新的pixmap后通过在场景中设置rect找到了解决方案。因此,在
wheeleevent(self,event)
函数中,通过
self.clear()
清除场景并添加新的缩放pixmap后,场景的大小也需要更改。为此,我使用了下面的命令,其中
self.\u size
是缩放后的pixmap的新大小

self.setscen直立(QtCore.QRectF(0.0,0.0,self.\uuuu size.width(),self.\uuu size.height())

看看我的问题是否有助于@AngryDuck解决QGraphicsView的缩放功能的问题,因为它创建了一个低质量的pixmap视图,这就是我不使用它的原因。如果你只是想在每个滚轮滚动时加载一个不同分辨率的图像,而不是在图像“像素化”时实际缩放图像,请稍候然后让鼠标滚轮事件清除场景,然后根据鼠标滚动将较大或较小的图像添加到graphicsview(不理想,但似乎是您所要求的)@AngryDuck,这就是我想要的。问题是,场景没有按照pixmap的大小显示。例如,当我滚动并创建了一个大的pixmap,因此需要滚动条时,如果我滚动并创建了一个小的pixmap,滚动条仍然存在,因为场景的大小没有改变。然而,我通过在添加新的像素贴图后在场景中设置一个rect找到了解决方案。当你说变换时,你的意思是缩放?(缩放的问题是会创建低质量的pixmap。)