缩放鼠标位置QGraphicsView-PyQt4

问题描述 投票:0回答:1

我正在寻找如何缩放QGraphicsView,但是要在光标位置上进行缩放。目前,我可以缩放,但是缩放到的位置不一致。

    def wheelEvent(self, event):
        '''Wheel event to zoom
        '''
        # Run default event
        QtWidgets.QGraphicsView.wheelEvent(self, event)

        # Define zoom factor
        factor = 1.1
        if event.delta() < 0:
            factor = 0.9

        self.scale(factor, factor)

我见过self.mapToScene()的使用,但没有成功

python pyqt pyqt4 qgraphicsview
1个回答
0
投票

一种可能的解决方案是将注意力集中在鼠标所在的点上,缩放并重新计算新的中心应位于的点:

def wheelEvent(self, event):
    factor = 1.1
    if event.delta() < 0:
        factor = 0.9
    view_pos = event.pos()
    scene_pos = self.mapToScene(view_pos)
    self.centerOn(scene_pos)
    self.scale(factor, factor)
    delta = self.mapToScene(view_pos) - self.mapToScene(self.viewport().rect().center())
    self.centerOn(scene_pos - delta)
© www.soinside.com 2019 - 2024. All rights reserved.