diff options
Diffstat (limited to 'tests/manual/qtabletevent/regular_widgets/main.cpp')
-rw-r--r-- | tests/manual/qtabletevent/regular_widgets/main.cpp | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/tests/manual/qtabletevent/regular_widgets/main.cpp b/tests/manual/qtabletevent/regular_widgets/main.cpp index 339d1d3633..caf8c70c6f 100644 --- a/tests/manual/qtabletevent/regular_widgets/main.cpp +++ b/tests/manual/qtabletevent/regular_widgets/main.cpp @@ -82,7 +82,7 @@ class EventReportWidget : public QWidget { Q_OBJECT public: - EventReportWidget() { startTimer(1000); } + EventReportWidget(); public slots: void clearPoints() { m_points.clear(); update(); } @@ -98,6 +98,8 @@ protected: void tabletEvent(QTabletEvent *) override; + bool event(QEvent *event) override; + void paintEvent(QPaintEvent *) override; void timerEvent(QTimerEvent *) override; @@ -108,10 +110,17 @@ private: bool m_lastIsTabletMove = false; Qt::MouseButton m_lastButton = Qt::NoButton; QVector<TabletPoint> m_points; + QVector<QPointF> m_touchPoints; int m_tabletMoveCount = 0; int m_paintEventCount = 0; }; +EventReportWidget::EventReportWidget() +{ + setAttribute(Qt::WA_AcceptTouchEvents); + startTimer(1000); +} + void EventReportWidget::paintEvent(QPaintEvent *) { QPainter p(this); @@ -160,6 +169,11 @@ void EventReportWidget::paintEvent(QPaintEvent *) } } } + p.setPen(Qt::blue); + for (QPointF t : m_touchPoints) { + p.drawLine(t.x() - 40, t.y(), t.x() + 40, t.y()); + p.drawLine(t.x(), t.y() - 40, t.x(), t.y() + 40); + } ++m_paintEventCount; } @@ -198,6 +212,27 @@ void EventReportWidget::tabletEvent(QTabletEvent *event) m_lastIsTabletMove = isMove; } +bool EventReportWidget::event(QEvent *event) +{ + switch (event->type()) { + case QEvent::TouchBegin: + case QEvent::TouchUpdate: + event->accept(); + m_touchPoints.clear(); + for (const QTouchEvent::TouchPoint &p : static_cast<const QTouchEvent *>(event)->touchPoints()) + m_touchPoints.append(p.pos()); + update(); + break; + case QEvent::TouchEnd: + m_touchPoints.clear(); + update(); + break; + default: + return QWidget::event(event); + } + return true; +} + void EventReportWidget::outputMouseEvent(QMouseEvent *event) { if (event->type() == QEvent::MouseMove) { |