aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ginput/touch/QWidget/example
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ginput/touch/QWidget/example')
-rw-r--r--drivers/ginput/touch/QWidget/example/mywidget.cpp54
-rw-r--r--drivers/ginput/touch/QWidget/example/mywidget.h18
-rw-r--r--drivers/ginput/touch/QWidget/example/readme.txt3
3 files changed, 75 insertions, 0 deletions
diff --git a/drivers/ginput/touch/QWidget/example/mywidget.cpp b/drivers/ginput/touch/QWidget/example/mywidget.cpp
new file mode 100644
index 00000000..b14713b1
--- /dev/null
+++ b/drivers/ginput/touch/QWidget/example/mywidget.cpp
@@ -0,0 +1,54 @@
+#include "mywidget.h"
+#include "ugfx/src/ginput/ginput_driver_mouse.h"
+
+extern GMouse* qwidgetMouse;
+extern coord_t qwidgetMouseX;
+extern coord_t qwidgetMouseY;
+extern coord_t qwidgetMouseZ;
+extern uint16_t qwidgetMouseButtons;
+
+MyWidget::MyWidget(QWidget* parent) : QWidget(parent)
+{
+ // GMouse
+ if (!qwidgetMouse) {
+ qFatal("MyWidget::MyWidget(): Invalid GMouse (nullptr).");
+ }
+ qwidgetMouse->display = nullptr; // Set your display here!
+}
+
+void MyWidget::mousePressEvent(QMouseEvent* event)
+{
+ event->accept();
+
+ qwidgetMouseX = event->x();
+ qwidgetMouseY = event->y();
+ qwidgetMouseZ = 1;
+
+ if (event->buttons() & Qt::LeftButton) {
+ qwidgetMouseButtons = GINPUT_MOUSE_BTN_LEFT;
+ } else if (event->buttons() & Qt::RightButton) {
+ qwidgetMouseButtons = GINPUT_MOUSE_BTN_RIGHT;
+ }
+
+ _gmouseWakeup(qwidgetMouse);
+}
+
+void MyWidget::mouseReleaseEvent(QMouseEvent* event)
+{
+ event->accept();
+
+ qwidgetMouseZ = 0;
+ qwidgetMouseButtons = 0;
+
+ _gmouseWakeup(qwidgetMouse);
+}
+
+void MyWidget::mouseMoveEvent(QMouseEvent* event)
+{
+ event->accept();
+
+ qwidgetMouseX = event->x();
+ qwidgetMouseY = event->y();
+
+ _gmouseWakeup(qwidgetMouse);
+}
diff --git a/drivers/ginput/touch/QWidget/example/mywidget.h b/drivers/ginput/touch/QWidget/example/mywidget.h
new file mode 100644
index 00000000..f3e329d3
--- /dev/null
+++ b/drivers/ginput/touch/QWidget/example/mywidget.h
@@ -0,0 +1,18 @@
+#pragma once
+
+class MyWidget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ MyWidget(QWidget* parent = nullptr);
+ virtual ~MyWidget() = default;
+
+protected:
+ virtual void mousePressEvent(QMouseEvent* event) override;
+ virtual void mouseReleaseEvent(QMouseEvent* event) override;
+ virtual void mouseMoveEvent(QMouseEvent* event) override;
+
+private:
+ Q_DISABLE_COPY(MyWidget)
+};
diff --git a/drivers/ginput/touch/QWidget/example/readme.txt b/drivers/ginput/touch/QWidget/example/readme.txt
new file mode 100644
index 00000000..df127019
--- /dev/null
+++ b/drivers/ginput/touch/QWidget/example/readme.txt
@@ -0,0 +1,3 @@
+This example shows how a QWidget can be used as touch input.
+
+Important note: The GDisplay pointer must be set to a valid display in mywidget.cpp:16 for this to work.