mirror of
https://github.com/wassname/sloth.git
synced 2026-07-17 11:33:03 +08:00
Enable scrolling Image/Frame by draging with right mouse button pressed
This commit is contained in:
@@ -21,6 +21,9 @@ class GraphicsView(QGraphicsView):
|
||||
self.setRenderHints(QPainter.Antialiasing | QPainter.SmoothPixmapTransform | QPainter.TextAntialiasing);
|
||||
self.setStyleSheet("QFrame { border: 3px solid black }");
|
||||
self.active_ = False
|
||||
self._pan = False
|
||||
self._panStartX = -1
|
||||
self._panStartY = -1
|
||||
|
||||
def setScene(self, scene):
|
||||
QGraphicsView.setScene(self, scene)
|
||||
@@ -85,6 +88,34 @@ class GraphicsView(QGraphicsView):
|
||||
# self.setScaleAbsolute(self.getMaxScale())
|
||||
QGraphicsView.resizeEvent(self, event)
|
||||
|
||||
def mousePressEvent(self, event):
|
||||
if event.button() & Qt.RightButton != 0:
|
||||
self._pan = True
|
||||
self._panStartX = event.x()
|
||||
self._panStartY = event.y()
|
||||
self.setCursor(Qt.ClosedHandCursor)
|
||||
event.accept()
|
||||
else:
|
||||
return QGraphicsView.mousePressEvent(self, event)
|
||||
|
||||
def mouseReleaseEvent(self, event):
|
||||
if event.button() & Qt.RightButton != 0:
|
||||
self._pan = False
|
||||
self.setCursor(Qt.ArrowCursor)
|
||||
event.accept()
|
||||
else:
|
||||
return QGraphicsView.mouseReleaseEvent(self, event)
|
||||
|
||||
def mouseMoveEvent(self, event):
|
||||
if self._pan:
|
||||
self.horizontalScrollBar().setValue(self.horizontalScrollBar().value() - (event.x() - self._panStartX))
|
||||
self.verticalScrollBar() .setValue(self.verticalScrollBar().value() - (event.y() - self._panStartY));
|
||||
self._panStartX = event.x()
|
||||
self._panStartY = event.y()
|
||||
event.accept()
|
||||
else:
|
||||
return QGraphicsView.mouseMoveEvent(self, event)
|
||||
|
||||
class FrameViewer(QWidget):
|
||||
# Signals
|
||||
activeSceneViewChanged = pyqtSignal(GraphicsView)
|
||||
|
||||
Reference in New Issue
Block a user