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/QImageReader>
|
||||||
#include <QtGui/QImageWriter>
|
#include <QtGui/QImageWriter>
|
||||||
#include <QtGui/QPainter>
|
#include <QtGui/QPainter>
|
||||||
|
#include <QtGui/QWheelEvent>
|
||||||
#include <QtCore/QDebug>
|
#include <QtCore/QDebug>
|
||||||
#include <QtPrintSupport/QPrintDialog>
|
#include <QtPrintSupport/QPrintDialog>
|
||||||
|
|
||||||
@@ -36,6 +37,10 @@ QImageViewer::QImageViewer (QWidget* parent) : QWidget(parent) {
|
|||||||
_scrollArea->setWidget(_imageLabel);
|
_scrollArea->setWidget(_imageLabel);
|
||||||
_scrollArea->setWidgetResizable(false);
|
_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);
|
layout->addWidget(_scrollArea);
|
||||||
|
|
||||||
clearImage();
|
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) {
|
void QImageViewer::enterEvent (QEnterEvent* event) {
|
||||||
|
|
||||||
Q_UNUSED(event);
|
Q_UNUSED(event);
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ class QImageViewer : public QWidget {
|
|||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
void keyPressEvent (QKeyEvent* event);
|
void keyPressEvent (QKeyEvent* event);
|
||||||
|
bool eventFilter (QObject* object, QEvent* event) override;
|
||||||
void enterEvent (QEnterEvent* event) override;
|
void enterEvent (QEnterEvent* event) override;
|
||||||
void leaveEvent (QEvent* event) override;
|
void leaveEvent (QEvent* event) override;
|
||||||
|
|
||||||
|
|||||||
@@ -78,5 +78,6 @@ Available Quick keys while in the Image Visualizer:
|
|||||||
'+' zoom in
|
'+' zoom in
|
||||||
'-' zoom out
|
'-' zoom out
|
||||||
ESC reset to default zoom level.
|
ESC reset to default zoom level.
|
||||||
|
Ctrl+mouse wheel zoom in or out.
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user