Skip to content

Commit 45475b0

Browse files
committed
Add mouse wheel support to MouseEventHandler
1 parent 0aa0537 commit 45475b0

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

src/mouseeventhandler.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,18 @@ bool MouseEventHandler::eventFilter(QObject *obj, QEvent *event)
7777
return true;
7878
}
7979

80+
case QEvent::Wheel: {
81+
QWheelEvent *wheelEvent = static_cast<QWheelEvent *>(event);
82+
const int delta = wheelEvent->angleDelta().y();
83+
84+
if (delta > 0)
85+
emit mouseWheelUp();
86+
else if (delta < 0)
87+
emit mouseWheelDown();
88+
89+
break;
90+
}
91+
8092
default:
8193
break;
8294
}

src/mouseeventhandler.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ class MouseEventHandler : public QObject
3434
void mouseMoved(qreal x, qreal y);
3535
void mousePressed();
3636
void mouseReleased();
37+
void mouseWheelUp();
38+
void mouseWheelDown();
3739

3840
private:
3941
void getSprites();

test/mouseeventhandler/mouseeventhandler_test.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,3 +405,25 @@ TEST(MouseEventHandlerTest, MousePressReleaseEvent)
405405
pressedSpy.clear();
406406
releasedSpy.clear();
407407
}
408+
409+
TEST(MouseEventHandlerTest, WheelEvent)
410+
{
411+
MouseEventHandler handler;
412+
QSignalSpy upSpy(&handler, &MouseEventHandler::mouseWheelUp);
413+
QSignalSpy downSpy(&handler, &MouseEventHandler::mouseWheelDown);
414+
QWheelEvent event1(QPointF(), QPointF(), QPoint(2, 3), QPoint(10, 15), Qt::LeftButton, Qt::NoModifier, Qt::NoScrollPhase, false); // up
415+
QWheelEvent event2(QPointF(), QPointF(), QPoint(1, -5), QPoint(10, -50), Qt::LeftButton, Qt::NoModifier, Qt::NoScrollPhase, false); // down
416+
QWheelEvent event3(QPointF(), QPointF(), QPoint(-10, 0), QPoint(-100, 0), Qt::LeftButton, Qt::NoModifier, Qt::NoScrollPhase, false); // none
417+
418+
handler.eventFilter(nullptr, &event1);
419+
ASSERT_EQ(upSpy.count(), 1);
420+
ASSERT_EQ(downSpy.count(), 0);
421+
422+
handler.eventFilter(nullptr, &event2);
423+
ASSERT_EQ(upSpy.count(), 1);
424+
ASSERT_EQ(downSpy.count(), 1);
425+
426+
handler.eventFilter(nullptr, &event3);
427+
ASSERT_EQ(upSpy.count(), 1);
428+
ASSERT_EQ(downSpy.count(), 1);
429+
}

0 commit comments

Comments
 (0)