1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-11-24 03:35:53 +01:00

Add middle mouse button drag in the GraphView

Handle middle mouse button in `mouseMoveEvent()` (new) and `mousePressEvent()` methods.
This commit is contained in:
imonlyfourteen 2024-06-04 08:35:27 +00:00 committed by GitHub
parent 74cf139b01
commit e09f4d47cd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 27 additions and 0 deletions

View File

@ -342,10 +342,35 @@ void GraphView::resizeEvent(QResizeEvent *e)
QGraphicsView::resizeEvent(e);
}
void GraphView::mouseMoveEvent(QMouseEvent *e)
{
if (e->buttons() & Qt::MiddleButton) {
QScrollBar *sb = horizontalScrollBar();
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0)
int x = e->x();
#else // QT 5.15
int x = e->position().toPoint().x();
#endif // QT 5.15
sb->setSliderPosition(sb->sliderPosition() - (x - _xStartDrag));
_xStartDrag = x;
}
QGraphicsView::mouseMoveEvent(e);
}
void GraphView::mousePressEvent(QMouseEvent *e)
{
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0)
if (e->button() == Qt::LeftButton)
newSliderPosition(mapToScene(e->pos()));
else if (e->button() == Qt::MiddleButton)
_xStartDrag = e->x();
#else // QT 5.15
if (e->button() == Qt::LeftButton)
newSliderPosition(mapToScene(e->position().toPoint()));
else if (e->button() == Qt::MiddleButton)
_xStartDrag = e->position().toPoint().x();
#endif // QT 5.15
QGraphicsView::mousePressEvent(e);
}

View File

@ -57,6 +57,7 @@ protected:
void setUnits(Units units);
void resizeEvent(QResizeEvent *e);
void mouseMoveEvent(QMouseEvent *e);
void mousePressEvent(QMouseEvent *e);
void wheelEvent(QWheelEvent *e);
void changeEvent(QEvent *e);
@ -122,6 +123,7 @@ private:
qreal _minYRange;
qreal _zoom;
int _xStartDrag;
};
#endif // GRAPHVIEW_H