diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2021-06-14 16:13:21 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2021-06-15 11:12:21 +0200 |
commit | d3412cddab1ca2ed47ed3862d5d7e0a065e64b86 (patch) | |
tree | 6f4cf25cd9e738461c6331d5b6f6381d59d1d120 /examples/quick/rendercontrol/rendercontrol_d3d11 | |
parent | 6dfed1ee9c8e03780b222a71f6b90fe2016d8994 (diff) |
rendercontrol examples: Exercise key event generation as well
Task-number: QTBUG-93489
Change-Id: Ife9db7b066add1f41de964d4c41309568f954320
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
Diffstat (limited to 'examples/quick/rendercontrol/rendercontrol_d3d11')
3 files changed, 27 insertions, 6 deletions
diff --git a/examples/quick/rendercontrol/rendercontrol_d3d11/demo.qml b/examples/quick/rendercontrol/rendercontrol_d3d11/demo.qml index 32e2f423d1..6717321a1a 100644 --- a/examples/quick/rendercontrol/rendercontrol_d3d11/demo.qml +++ b/examples/quick/rendercontrol/rendercontrol_d3d11/demo.qml @@ -53,9 +53,10 @@ import QtQuick.Particles 2.0 Rectangle { id: root + property bool keyDown: false gradient: Gradient { - GradientStop { position: 0; color: mouse.pressed ? "lightsteelblue" : "steelblue" } + GradientStop { position: 0; color: mouse.pressed ? "lightsteelblue" : (keyDown ? "blue" : "steelblue") } GradientStop { position: 1; color: "black" } } @@ -205,4 +206,7 @@ Rectangle { id: mouse anchors.fill: parent } + + Keys.onPressed: keyDown = true + Keys.onReleased: keyDown = false } diff --git a/examples/quick/rendercontrol/rendercontrol_d3d11/window.cpp b/examples/quick/rendercontrol/rendercontrol_d3d11/window.cpp index 478ce88344..eb3d3b4c3c 100644 --- a/examples/quick/rendercontrol/rendercontrol_d3d11/window.cpp +++ b/examples/quick/rendercontrol/rendercontrol_d3d11/window.cpp @@ -130,12 +130,12 @@ Window::Window(Engine *engine) qWarning() << error.url() << error.line() << error; } - QQuickItem *rootItem = qobject_cast<QQuickItem *>(rootObject); - rootItem->setSize(QSize(QML_WIDTH, QML_HEIGHT)); - m_quickWindow->contentItem()->setSize(rootItem->size()); - m_quickWindow->setGeometry(0, 0, rootItem->width(), rootItem->height()); + m_rootItem = qobject_cast<QQuickItem *>(rootObject); + m_rootItem->setSize(QSize(QML_WIDTH, QML_HEIGHT)); + m_quickWindow->contentItem()->setSize(m_rootItem->size()); + m_quickWindow->setGeometry(0, 0, m_rootItem->width(), m_rootItem->height()); - rootItem->setParentItem(m_quickWindow->contentItem()); + m_rootItem->setParentItem(m_quickWindow->contentItem()); } Window::~Window() @@ -185,6 +185,16 @@ void Window::mouseReleaseEvent(QMouseEvent *e) QCoreApplication::sendEvent(m_quickWindow, &mappedEvent); } +void Window::keyPressEvent(QKeyEvent *e) +{ + QCoreApplication::sendEvent(m_quickWindow, e); +} + +void Window::keyReleaseEvent(QKeyEvent *e) +{ + QCoreApplication::sendEvent(m_quickWindow, e); +} + bool Window::event(QEvent *e) { switch (e->type()) { @@ -372,6 +382,9 @@ void Window::updateQuick() QSize(QML_WIDTH, QML_HEIGHT), SAMPLE_COUNT)); + // Ensure key events are received by the root Rectangle. + m_rootItem->forceActiveFocus(); + m_quickInitialized = true; } diff --git a/examples/quick/rendercontrol/rendercontrol_d3d11/window.h b/examples/quick/rendercontrol/rendercontrol_d3d11/window.h index 4a102bd4dd..9a66898c5b 100644 --- a/examples/quick/rendercontrol/rendercontrol_d3d11/window.h +++ b/examples/quick/rendercontrol/rendercontrol_d3d11/window.h @@ -57,6 +57,7 @@ QT_BEGIN_NAMESPACE class QQuickRenderControl; class QQuickWindow; +class QQuickItem; class QQmlEngine; class QQmlComponent; QT_END_NAMESPACE @@ -71,6 +72,8 @@ protected: void exposeEvent(QExposeEvent *e) override; void mousePressEvent(QMouseEvent *e) override; void mouseReleaseEvent(QMouseEvent *e) override; + void keyPressEvent(QKeyEvent *e) override; + void keyReleaseEvent(QKeyEvent *e) override; bool event(QEvent *e) override; private: @@ -84,6 +87,7 @@ private: QQuickWindow *m_quickWindow; QQmlEngine *m_qmlEngine; QQmlComponent *m_qmlComponent; + QQuickItem *m_rootItem; bool m_quickInitialized = false; bool m_quickDirty = true; |