zoom plus intuitif avec translation du widget pour garder une cohérence dans le zoom

scenarios
Dylan Jeannin 2026-04-21 10:20:24 +02:00
parent 8b6308d3c9
commit e21a64fcad
2 changed files with 24 additions and 2 deletions

View File

@ -901,7 +901,18 @@ class GraphWidget(QGraphicsView):
painter.drawRect(sceneRect) painter.drawRect(sceneRect)
def wheelEvent(self, event): def wheelEvent(self, event):
self.scaleView(math.pow(2.0, event.angleDelta().y() / 240.0)) factor = math.pow(2.0, event.angleDelta().y() / 240.0)
old_pos = self.mapToScene(event.pos())
self.scaleView(factor)
new_pos = self.mapToScene(event.pos())
delta = old_pos - new_pos
# Compensation pour garder le point sous la souris fixe
self.translate(delta.x(), delta.y())
def scaleView(self, scaleFactor): def scaleView(self, scaleFactor):
factor = self.transform().scale( factor = self.transform().scale(

View File

@ -312,7 +312,18 @@ class GraphWidget(QGraphicsView):
painter.drawRect(sceneRect) painter.drawRect(sceneRect)
def wheelEvent(self, event): def wheelEvent(self, event):
self.scaleView(math.pow(2.0, event.angleDelta().y() / 240.0)) factor = math.pow(2.0, event.angleDelta().y() / 240.0)
old_pos = self.mapToScene(event.pos())
self.scaleView(factor)
new_pos = self.mapToScene(event.pos())
delta = old_pos - new_pos
# Compensation pour garder le point sous la souris fixe
self.translate(delta.x(), delta.y())
def keyPressEvent(self, event): def keyPressEvent(self, event):
key = event.key() key = event.key()