Die C++ API hat QEvent
zusammen mit mehreren anderen davon abgeleiteten Klassen (QMouseEvent
, QGestureEvent
usw.). QML hat dagegen auch Ereignisse. Ich habe jedoch Schwierigkeiten, eine elegante Methode zur direkten Verarbeitung von C++ - Ereignissen in QML zu finden.Behandlung von Qt C++ Ereignissen im QML Kontext
Regel, was ich tun ist, I eine benutzerdefinierte QQuickWidget
(oder ähnliches einschließlich QQmlEngine
) erstellen, überschreiben die QWidget::event(QEvent* event)
und auf einer bestimmten C++ Ereignis Empfangen ich es durch Signale auf QML Schlitze mit dem QML Code breiten sich durch dieses Widget geladen wird. Das scheint eine Menge Arbeit zu sein und ich frage mich, ob es eine Art von QML-eingebauter Ereignisbehandlung für Ereignisse gibt, die aus C++ - Kontext kommen.
Insbesondere bin ich daran interessiert, QGestureEvent
s in QML zu behandeln, aber ich denke, was für diese Art von Ereignissen funktioniert sollte auch für jede andere Art von Ereignis funktionieren.
Haben Sie versucht, [MultiPointTouchArea] (http://doc.qt.io/qt-5/qml-qtquick-multipointtoucharea.html) zu verwenden? Es hat ein Signal "Geste Gestartet (GestureEvent Geste)", das vielleicht Ihre Bedürfnisse beantworten könnte. – dydil
Die Sache ist, ich möchte Gestenereignisse erfassen, die wirklich aus einem C++ - Kontext stammen. Zum Beispiel, wenn ich Daten von einem Gerät (auf das nur über C++ zugegriffen werden kann) auf die Gesten-API von Qt abbilde und sie dann an den QML-Teil der Anwendung weitergebe. Es ist möglicherweise nicht einmal per Fernbedienung verbunden (z. B. Gesten mit einem Kinect-Gerät). – rbaleksandar
"Dies scheint eine Menge Arbeit" - es ist buchstäblich ** nichts ** im Vergleich zu der Menge an Arbeit, die es dauern würde, um C++ Event Handling für QML zu implementieren. – dtech