Compare commits

..

4 Commits

Author SHA1 Message Date
Ernie Pasveer ddc7245125 Merge pull request #521 from tiresiasfromthebai/imageviewer-wheel-zoom
Add Ctrl+wheel zoom to the Image Visualizer
2026-08-14 17:12:48 -05:00
tiresiasfromthebai bd04ef3199 Add Ctrl+wheel zoom to the Image Visualizer 2026-08-14 15:34:05 +02:00
Ernie Pasveer 23df8207d8 Merge pull request #520 from tiresiasfromthebai/fix-imageviewer-zoom
Fix the Image Visualizer zoom keys under Qt6
2026-08-14 07:23:52 -05:00
tiresiasfromthebai d54df0b1b3 Fix the Image Visualizer zoom keys under Qt6 2026-08-14 10:43:10 +02:00
3 changed files with 35 additions and 3 deletions
+31 -1
View File
@@ -9,6 +9,7 @@
#include <QtGui/QImageReader>
#include <QtGui/QImageWriter>
#include <QtGui/QPainter>
#include <QtGui/QWheelEvent>
#include <QtCore/QDebug>
#include <QtPrintSupport/QPrintDialog>
@@ -19,6 +20,8 @@
QImageViewer::QImageViewer (QWidget* parent) : QWidget(parent) {
setFocusPolicy(Qt::StrongFocus); // So the widget can take focus and receive the +/-/ESC zoom keys.
_zoomFactor = 1.0;
// Setup the widgets
@@ -34,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();
@@ -174,7 +181,30 @@ void QImageViewer::keyPressEvent (QKeyEvent* event) {
}
}
void QImageViewer::enterEvent (QEvent* 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);
+3 -2
View File
@@ -38,8 +38,9 @@ class QImageViewer : public QWidget {
protected slots:
void keyPressEvent (QKeyEvent* event);
void enterEvent (QEvent* event);
void leaveEvent (QEvent* event);
bool eventFilter (QObject* object, QEvent* event) override;
void enterEvent (QEnterEvent* event) override;
void leaveEvent (QEvent* event) override;
private:
QImage _image;
+1
View File
@@ -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.
```