aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp')
-rw-r--r--tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp b/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp
index 5e8f762e23..bd051ec990 100644
--- a/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp
+++ b/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp
@@ -58,6 +58,7 @@ private slots:
void grabBeforeShow();
void reparentToNewWindow();
void nullEngine();
+ void keyEvents();
};
@@ -337,6 +338,33 @@ void tst_qquickwidget::nullEngine()
QVERIFY(widget.engine());
}
+class KeyHandlingWidget : public QQuickWidget
+{
+public:
+ void keyPressEvent(QKeyEvent *e) override {
+ if (e->key() == Qt::Key_A)
+ ok = true;
+ }
+
+ bool ok = false;
+};
+
+void tst_qquickwidget::keyEvents()
+{
+ // A QQuickWidget should behave like a normal widget when it comes to event handling.
+ // Verify that key events actually reach the widget. (QTBUG-45757)
+ KeyHandlingWidget widget;
+ widget.setSource(testFileUrl("rectangle.qml"));
+ widget.show();
+ QVERIFY(QTest::qWaitForWindowExposed(widget.window(), 5000));
+
+ // Note: send the event to the QWindow, not the QWidget, in order
+ // to simulate the full event processing chain.
+ QTest::keyClick(widget.window()->windowHandle(), Qt::Key_A);
+
+ QTRY_VERIFY(widget.ok);
+}
+
QTEST_MAIN(tst_qquickwidget)
#include "tst_qquickwidget.moc"