diff --git a/MapperGLCanvas.cpp b/MapperGLCanvas.cpp index c198e11..5b6fdd3 100644 --- a/MapperGLCanvas.cpp +++ b/MapperGLCanvas.cpp @@ -391,6 +391,24 @@ void MapperGLCanvas::wheelEvent(QWheelEvent *event) event->accept(); } +void MapperGLCanvas::mouseMoveEvent(QMouseEvent *event) +{ + static QPoint lastPos; + + // Click-and-drag translate view. + if (event->buttons() & Qt::MiddleButton) + { + QPoint pos = event->pos(); + QPointF diff = mapToScene(pos) - mapToScene(lastPos); + QGraphicsView* view = scene()->views().first(); + view->translate(diff.x(), diff.y()); + view->update(); + lastPos = pos; + } + + QGraphicsView::mouseMoveEvent(event); +} + bool MapperGLCanvas::eventFilter(QObject *target, QEvent *event) { if (event->type() == QEvent::KeyPress) diff --git a/MapperGLCanvas.h b/MapperGLCanvas.h index 7b537eb..ed6e16e 100644 --- a/MapperGLCanvas.h +++ b/MapperGLCanvas.h @@ -142,6 +142,7 @@ public slots: void deselectAll(); void wheelEvent(QWheelEvent *event); + void mouseMoveEvent(QMouseEvent *event); // Event Filter bool eventFilter(QObject *target, QEvent *event);