From 67e6994595f37fc3df67fa4a679b1228ad0bb953 Mon Sep 17 00:00:00 2001 From: Martin Vajnar Date: Tue, 3 Apr 2018 13:11:22 +0200 Subject: [PATCH] Shape: Capture wheel event in QWidget and use it for scaling and rotation --- orte/contrib/shape/MyQFrame.cpp | 13 +++++++++++++ orte/contrib/shape/MyQFrame.h | 3 +++ 2 files changed, 16 insertions(+) diff --git a/orte/contrib/shape/MyQFrame.cpp b/orte/contrib/shape/MyQFrame.cpp index 08b2140..370e320 100644 --- a/orte/contrib/shape/MyQFrame.cpp +++ b/orte/contrib/shape/MyQFrame.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include MyQFrame::MyQFrame( QWidget *parent) @@ -16,6 +17,8 @@ MyQFrame::MyQFrame( QWidget *parent) mousePressed=0; objects[0]=objects[1]=objects[2]=objects[3]=objects[4]=0; rotation_mode=0; + wheel_delta=0; + scale_factor=1; setFocusPolicy(Qt::StrongFocus); @@ -96,6 +99,16 @@ void MyQFrame::mouseReleaseEvent (QMouseEvent *) { mousePressed=0; } + +void MyQFrame::wheelEvent (QWheelEvent *e) +{ + if(!rotation_mode) + wheel_delta += e->delta()/120; + else + scale_factor += (double)e->delta()/1200; + e->accept(); +} + void MyQFrame::keyPressEvent (QKeyEvent *e) { if (e->key() == Qt::Key_Control) diff --git a/orte/contrib/shape/MyQFrame.h b/orte/contrib/shape/MyQFrame.h index 16894c2..344db3d 100644 --- a/orte/contrib/shape/MyQFrame.h +++ b/orte/contrib/shape/MyQFrame.h @@ -23,6 +23,7 @@ protected: void mousePressEvent(QMouseEvent *e); void mouseReleaseEvent(QMouseEvent *e); void paintEvent(QPaintEvent*); + void wheelEvent(QWheelEvent*); void keyPressEvent(QKeyEvent*); void keyReleaseEvent(QKeyEvent*); @@ -43,7 +44,9 @@ public: int mousePressed; int mouseX; int mouseY; + int wheel_delta; int rotation_mode; + double scale_factor; signals: void changed(void); -- 2.39.2