python - 放大鼠标位置 QGraphicsView

标签 python pyqt pyqt4 qgraphicsview qgraphicsscene

我正在寻找如何放大 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()的用法,但是没有成功

最佳答案

一个可能的解决方案是关注鼠标所在的点,缩放并重新计算新中心应该在的点:

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)

关于python - 放大鼠标位置 QGraphicsView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58965209/

相关文章:

python - sort_values 和 sort_index 有什么区别?

python - Shapely 中 MultiLineString 对象中 LineString 的顺序

python - 具有状态栏和菜单栏的 PyQt QWidget

python - 对齐 qTableWidget 中的可检查项目

python - pyqt4 在 Linux 中设置 QDateEdit 值

Python Django Queryset 仅从日期获取月份和年份

c# - 如何使用c#设置arcobjects中的输入和输出参数,调用python脚本?

python - PyQt:如何将我的脚本转换为 GUI?

python - 将 yaxis 固定到位

python - 在不生成新窗口的情况下在 Qt 中嵌入 PyQtGraph