aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quick/rendercontrol/rendercontrol_d3d11
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2021-06-14 16:13:21 +0200
committerLaszlo Agocs <laszlo.agocs@qt.io>2021-06-15 11:12:21 +0200
commitd3412cddab1ca2ed47ed3862d5d7e0a065e64b86 (patch)
tree6f4cf25cd9e738461c6331d5b6f6381d59d1d120 /examples/quick/rendercontrol/rendercontrol_d3d11
parent6dfed1ee9c8e03780b222a71f6b90fe2016d8994 (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')
-rw-r--r--examples/quick/rendercontrol/rendercontrol_d3d11/demo.qml6
-rw-r--r--examples/quick/rendercontrol/rendercontrol_d3d11/window.cpp23
-rw-r--r--examples/quick/rendercontrol/rendercontrol_d3d11/window.h4
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;