From 04ff142f1c30c744ade6e9a340ec41a36d6d7189 Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Mon, 3 Feb 2025 08:48:31 +0100 Subject: [PATCH] [detectionview] zooming --- fixtracks/widgets/detectionview.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/fixtracks/widgets/detectionview.py b/fixtracks/widgets/detectionview.py index bdc1ea9..46d8649 100644 --- a/fixtracks/widgets/detectionview.py +++ b/fixtracks/widgets/detectionview.py @@ -87,14 +87,31 @@ class DetectionView(QWidget): self._img = None self._pixmapitem = None self._scene = DetectionScene() + # self.setRenderHint(QGraphicsView.RenderFlag.Ren Antialiasing) self._view = QGraphicsView() self._view.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) self._view.setMouseTracking(True) + self._zoomFactor = 1.15 + self._minZoom = 0.1 + self._maxZoom = 10 + self._currentZoom = 1.0 lyt = QVBoxLayout() lyt.addWidget(self._view) self.setLayout(lyt) + def wheelEvent(self, event): + if event.angleDelta().y() > 0: # Zoom in + factor = self._zoomFactor + else: # Zoom out + factor = 1 / self._zoomFactor + + newZoom = self._currentZoom * factor + + if self._minZoom < newZoom < self._maxZoom: + self._view.scale(factor, factor) + self._currentZoom = newZoom + def setImage(self, image: QImage): self._img = image self._scene.signals.itemsSelected.connect(self.on_itemSelection)