为什么在我自己的QGraphicsView中使用mouseMoveEvent会使setTransformationAnchor无效?

2024-09-26 18:19:13 发布

您现在位置:Python中文网/ 问答频道 /正文

当我使用控制盘缩放图像时,图像将始终使用左上角的定位点进行缩放。你知道吗

但是当我注释掉mouseMoveEvent函数时,可以使用鼠标位置作为定位点来缩放图像。你知道吗

这是我的密码:

class myQGraphicsView(QGraphicsView):
    def __init__(self, *__args):
        super().__init__(*__args)

        self.setTransformationAnchor(self.AnchorUnderMouse)
        self.pressed = 0

        self.setMouseTracking(False)

    def mousePressEvent(self, QMouseEvent):
        print(1)
        self.pressed = 1
        self.last_mouse_x = QMouseEvent.x()
        self.last_mouse_y = QMouseEvent.y()

    def mouseMoveEvent(self, QMouseEvent):
        if self.pressed == 1:
            self.current_mouse_x = QMouseEvent.x()
            self.current_mouse_y = QMouseEvent.y()
            self.horizontalScrollBar().setValue(
                self.horizontalScrollBar().value() -(self.current_mouse_x - self.last_mouse_x))
            self.verticalScrollBar().setValue(
                self.verticalScrollBar().value() - (self.current_mouse_y - self.last_mouse_y))
            # print(self.current_mouse_x - self.last_mouse_x, self.current_mouse_y - self.last_mouse_y)
            # self.img_view.translate(self.current_mouse_x - self.last_mouse_x, self.current_mouse_y - self.last_mouse_y)
            # self.img_view.translate(1, 1)
            self.last_mouse_x = self.current_mouse_x
            self.last_mouse_y = self.current_mouse_y

    def mouseReleaseEvent(self, QMouseEvent):
        self.pressed = 0

    def wheelEvent(self, QWheelEvent):
        if QApplication.keyboardModifiers() == Qt.ControlModifier:
            print(self.mapToScene(self.x(), self.y()))
            angle = QWheelEvent.angleDelta().y()
            if angle > 0:
                scale_factor = 1.25
            else:
                scale_factor = 0.8
            self.scale(scale_factor, scale_factor)
            ui_1.current_img_w = ui_1.current_img_w * scale_factor
            ui_1.current_img_h = ui_1.current_img_h * scale_factor

Tags: 图像selfuiimgifdefcurrentlast

热门问题