Qt Quick Eingabehandler
Qt Quick Eingabehandler sind eine Reihe von QML-Typen, die zur Verarbeitung von „ events “ aus Tastatur-, Touch-, Maus- und Stift devices en in einer Benutzeroberfläche dienen. Im Gegensatz zu Elementen zur Ereignisverarbeitung, wie beispielsweise MouseArea und Flickable, sind Eingabehandler ausdrücklich nicht-visuell, benötigen weniger Speicherplatz und sind für den Einsatz in größerer Anzahl vorgesehen: eine Handler-Instanz pro Interaktionsaspekt. Jede Instanz eines Eingabe-Handlers verarbeitet bestimmte Ereignisse im Auftrag ihres „ parent “-Elements. Dadurch werden visuelle und verhaltensbezogene Aspekte besser voneinander getrennt, und das Verhalten wird durch eine feinkörnigere Komposition aufgebaut.
Die Beispiele unter „Qt Quick – Pointer-Handler“ veranschaulichen einige Anwendungsfälle hierfür.
Die bereits vorhandene angehängte Eigenschaft „ Keys “ (Eingabehandler) ist vom Konzept her ähnlich, daher bezeichnen wir die auf Zeigegeräte ausgerichteten Handler sowie „ Keys “ gemeinsam als die Gruppe der Eingabehandler. Wir gehen davon aus, in zukünftigen Versionen von Qt weitere Anwendungsfälle für angehängte Eigenschaften anbieten zu können.
Eingabe-Handler
Handler für das Ziehen | |
Handler für Maus- und Tablet-Hover | |
Unterstützt die Navigation mit den Pfeiltasten | |
Stellt die Tastenverarbeitung für Elemente bereit | |
Handler für Pinch-Gesten | |
Handler für die Reaktion auf einen einzelnen Berührungspunkt | |
Handler für Taps und Klicks | |
Handler für das Mausrad |
Wichtigste Funktionen
Zu den wichtigsten Funktionen gehören:
- Verarbeitung von Tastenanschlägen innerhalb des fokussierten Elements
- Verarbeitung von Gesten wie Tippen oder Ziehen, unabhängig vom jeweiligen Gerät
- Verarbeitung von Gesten verschiedener Gerätekategorien auf unterschiedliche Weise
- Jedes Element kann eine unbegrenzte Anzahl von Handlern haben
Handler, die Elemente bearbeiten
Manche Handler sorgen allein durch ihre Deklaration innerhalb eines Elements für Interaktivität:
import QtQuick
Rectangle {
width: 100
height: 100
color: "lightsteelblue"
DragHandler { }
}Eigenschaften und Signale von Handlern
Alle Handler verfügen über Eigenschaften, die in Bindungen verwendet werden können, sowie über Signale, die abgefangen werden können, um auf Eingaben zu reagieren:
import QtQuick
Rectangle {
id: button
signal clicked
width: 150; height: 50; radius: 3
color: tapHandler.pressed ? "goldenrod" : hoverHandler.hovered ? "wheat" : "beige"
border.color: activeFocus ? "brown" : "transparent"
focus: true
HoverHandler {
id: hoverHandler
}
TapHandler {
id: tapHandler
onTapped: button.clicked()
}
Keys.onEnterPressed: button.clicked()
}Zeiger-Grab
Ein wichtiges Konzept bei Zeiger-Handlern ist die Art der „Grabs“, die sie ausführen. Die einzige Art von „Grab“, die ein Element annehmen kann, ist der exklusive „Grab“: Wenn Sie beispielsweise ` QPointerEvent::setExclusiveGrabber()` aufrufen, werden die folgenden Mausbewegungen und das Mausloslass-Ereignis ausschließlich an dieses Objekt gesendet. (Als Workaround für diese Exklusivität siehe ` QQuickItem::setFiltersChildMouseEvents()` und ` QQuickItem::childMouseEventFilter()`.) Pointer-Handler verfügen jedoch über einen zusätzlichen Mechanismus: den „ passive grab “. Maus- und Touch- press -Ereignisse werden durch Abklappern aller Items in absteigender Z-Reihenfolge übermittelt: zuerst die untergeordneten Handler jedes Items und anschließend das „ Item “ selbst. Zum Zeitpunkt der Übermittlung eines Druckereignisses kann ein Handler je nach Bedarf entweder einen passiven oder einen exklusiven Grab ausführen. Wenn er einen passiven Grab ausführt, erhält er garantiert die Aktualisierungen und das Loslassen, selbst wenn andere Elemente oder Handler in der Szene irgendeine Art von Grab ausführen, sei es passiv oder exklusiv. Einige Handler (wie z. B. PointHandler) können nur mit passiven Grabs arbeiten; andere erfordern exklusive Grabs; und wieder andere können mit passiven Grabs „lauern“, bis sie erkennen, dass eine Geste ausgeführt wird, und dann den Übergang vom passiven zum exklusiven Grab vollziehen. Das Grab-Verhalten von TapHandler ist configurable.
Wenn ein Grab-Übergang angefordert wird, steuern die Funktionen „ PointerHandler::grabPermissions “, „ QQuickItem::keepMouseGrab()“ und „ QQuickItem::keepTouchGrab()“, ob der Übergang zugelassen wird.
Weiterführende Informationen
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.