[detection view] improving zooming under mac

This commit is contained in:
Jan Grewe 2025-02-10 11:07:08 +01:00
parent 1e86a74549
commit 6244f7fdbe

View File

@ -92,6 +92,7 @@ class DetectionView(QWidget):
self._view = QGraphicsView() self._view = QGraphicsView()
self._view.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) self._view.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
self._view.setMouseTracking(True) self._view.setMouseTracking(True)
self._mouseEnabled = True
self._zoomFactor = 1.15 self._zoomFactor = 1.15
self._minZoom = 0.1 self._minZoom = 0.1
self._maxZoom = 10 self._maxZoom = 10
@ -102,16 +103,23 @@ class DetectionView(QWidget):
self.setLayout(lyt) self.setLayout(lyt)
def wheelEvent(self, event): def wheelEvent(self, event):
if event.angleDelta().y() > 0: # Zoom in if not self._mouseEnabled:
factor = self._zoomFactor super().wheelEvent(event)
else: # Zoom out return
factor = 1 / self._zoomFactor modifiers = event.modifiers()
if modifiers == Qt.ControlModifier:
newZoom = self._currentZoom * factor delta = event.angleDelta().x()
if delta == 0:
delta = event.angleDelta().y()
sc = 1.001 ** delta
self._view.scale(sc, sc)
else:
super().wheelEvent(event)
if self._minZoom < newZoom < self._maxZoom: # elif modifiers == Qt.ShiftModifier:
self._view.scale(factor, factor) # print("Shift key pressed")
self._currentZoom = newZoom # elif modifiers == Qt.AltModifier:
# print("Alt key pressed")
def setImage(self, image: QImage): def setImage(self, image: QImage):
self._img = image self._img = image