mirror of
https://github.com/epasveer/seer.git
synced 2026-08-29 08:34:42 +08:00
Merge pull request #521 from tiresiasfromthebai/imageviewer-wheel-zoom
Add Ctrl+wheel zoom to the Image Visualizer
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
#include <QtGui/QImageReader>
|
||||
#include <QtGui/QImageWriter>
|
||||
#include <QtGui/QPainter>
|
||||
#include <QtGui/QWheelEvent>
|
||||
#include <QtCore/QDebug>
|
||||
#include <QtPrintSupport/QPrintDialog>
|
||||
|
||||
@@ -36,6 +37,10 @@ QImageViewer::QImageViewer (QWidget* parent) : QWidget(parent) {
|
||||
_scrollArea->setWidget(_imageLabel);
|
||||
_scrollArea->setWidgetResizable(false);
|
||||
|
||||
// The scroll area consumes wheel events for scrolling, so watch its
|
||||
// viewport to catch Ctrl+wheel for zooming.
|
||||
_scrollArea->viewport()->installEventFilter(this);
|
||||
|
||||
layout->addWidget(_scrollArea);
|
||||
|
||||
clearImage();
|
||||
@@ -176,6 +181,29 @@ void QImageViewer::keyPressEvent (QKeyEvent* event) {
|
||||
}
|
||||
}
|
||||
|
||||
bool QImageViewer::eventFilter (QObject* object, QEvent* event) {
|
||||
|
||||
// Ctrl+wheel over the image zooms in or out. A plain wheel keeps
|
||||
// scrolling the image as usual.
|
||||
if (object == _scrollArea->viewport() && event->type() == QEvent::Wheel) {
|
||||
|
||||
QWheelEvent* wheelEvent = static_cast<QWheelEvent*>(event);
|
||||
|
||||
if (wheelEvent->modifiers() & Qt::ControlModifier) {
|
||||
|
||||
if (wheelEvent->angleDelta().y() > 0) {
|
||||
zoomIn();
|
||||
}else if (wheelEvent->angleDelta().y() < 0) {
|
||||
zoomOut();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return QWidget::eventFilter(object, event);
|
||||
}
|
||||
|
||||
void QImageViewer::enterEvent (QEnterEvent* event) {
|
||||
|
||||
Q_UNUSED(event);
|
||||
|
||||
@@ -38,6 +38,7 @@ class QImageViewer : public QWidget {
|
||||
|
||||
protected slots:
|
||||
void keyPressEvent (QKeyEvent* event);
|
||||
bool eventFilter (QObject* object, QEvent* event) override;
|
||||
void enterEvent (QEnterEvent* event) override;
|
||||
void leaveEvent (QEvent* event) override;
|
||||
|
||||
|
||||
@@ -78,5 +78,6 @@ Available Quick keys while in the Image Visualizer:
|
||||
'+' zoom in
|
||||
'-' zoom out
|
||||
ESC reset to default zoom level.
|
||||
Ctrl+mouse wheel zoom in or out.
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user