Почему использование mouseMoveEvent в моем собственном QGraphicsView делает недействительным setTransformationAnchor? - PullRequest
0 голосов
/ 24 августа 2018

Когда я использую колесо для масштабирования изображения, изображение всегда будет масштабироваться с узловой точкой в ​​верхнем левом углу.

1002 * Но когда я закомментируйте * функцию mouseMoveEvent * 1004,изображение можно масштабировать с помощью позиции мыши в качестве точки привязки. Вот мой код: 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...