[detectionview] zooming
This commit is contained in:
parent
ae0df7b4c3
commit
04ff142f1c
@ -87,14 +87,31 @@ class DetectionView(QWidget):
|
|||||||
self._img = None
|
self._img = None
|
||||||
self._pixmapitem = None
|
self._pixmapitem = None
|
||||||
self._scene = DetectionScene()
|
self._scene = DetectionScene()
|
||||||
|
# self.setRenderHint(QGraphicsView.RenderFlag.Ren Antialiasing)
|
||||||
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._zoomFactor = 1.15
|
||||||
|
self._minZoom = 0.1
|
||||||
|
self._maxZoom = 10
|
||||||
|
self._currentZoom = 1.0
|
||||||
|
|
||||||
lyt = QVBoxLayout()
|
lyt = QVBoxLayout()
|
||||||
lyt.addWidget(self._view)
|
lyt.addWidget(self._view)
|
||||||
self.setLayout(lyt)
|
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):
|
def setImage(self, image: QImage):
|
||||||
self._img = image
|
self._img = image
|
||||||
self._scene.signals.itemsSelected.connect(self.on_itemSelection)
|
self._scene.signals.itemsSelected.connect(self.on_itemSelection)
|
||||||
|
Loading…
Reference in New Issue
Block a user