Qt Quick Eingabe-Handler
Qt Quick Eingabe-Handler sind eine Reihe von QML-Typen, die zur Behandlung von events von Tastatur, Touch, Maus und Stift devices in einer Benutzeroberfläche verwendet werden. Im Gegensatz zu Event-Handling-Elementen wie MouseArea und Flickable sind Input-Handler explizit nicht-visuell, benötigen weniger Speicher und sollen in größerer Anzahl verwendet werden: eine Handler-Instanz pro Aspekt der Interaktion. Jede Eingabe-Handler-Instanz behandelt bestimmte Ereignisse im Namen ihres parent Elements. Auf diese Weise werden die visuellen und verhaltensbezogenen Aspekte besser getrennt, und das Verhalten wird durch eine feinere Komposition aufgebaut.
Die Qt Quick Examples - Pointer Handlers demonstriert einige Anwendungsfälle für diese.
Die bereits existierende Keys attached-Eigenschaft hat ein ähnliches Konzept, daher beziehen wir uns auf die Zeigergeräte-orientierten Handler und Keys
zusammen als den Satz der Input Handler. Wir gehen davon aus, dass wir in zukünftigen Versionen von Qt weitere Anwendungsfälle für angehängte Eigenschaften anbieten werden.
Eingabe-Handler
Handler für das Ziehen | |
Handler für Maus- und Tablet-Hover | |
Unterstützt Tastennavigation durch Pfeiltasten | |
Bietet Tastenhandling für Items | |
Handler für Pinch-Gesten | |
Handler für das Reagieren auf einen einzelnen Touchpoint | |
Handler für Taps und Klicks | |
Handler für das Mausrad |
Hauptmerkmale
Einige der wichtigsten Funktionen sind:
- Verarbeitung von Tastatureingaben innerhalb des fokussierten Elements
- Verarbeitung von Gesten wie Tippen oder Ziehen, unabhängig davon, von welchem Gerät sie stammen
- Gesten von verschiedenen Geräteklassen auf unterschiedliche Weise behandeln
- Jedes Element kann unbegrenzt viele Handler haben
Handler Manipulation von Elementen
Einige Handler fügen Interaktivität hinzu, indem sie einfach innerhalb eines Objekts deklariert werden:
import QtQuick Rectangle { width: 100 height: 100 color: "lightsteelblue" DragHandler { } }
Handler-Eigenschaften und Signale
Alle Handler haben Eigenschaften, die in Bindungen verwendet werden können, und Signale, mit denen auf Eingaben reagiert werden kann:
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 greifen
Ein wichtiges Konzept bei Pointer-Handlern ist die Art der Zugriffe, die sie durchführen. Die einzige Art von Greifen, die ein Objekt ausführen kann, ist das exklusive Greifen: Wenn Sie zum Beispiel QPointerEvent::setExclusiveGrabber() aufrufen, werden die folgenden Mausbewegungen und das Mausfreigabeereignis nur an dieses Objekt gesendet. (Als Umgehung dieser Exklusivität siehe QQuickItem::setFiltersChildMouseEvents() und QQuickItem::childMouseEventFilter().) Den Zeiger-Handlern steht jedoch ein zusätzlicher Mechanismus zur Verfügung: passive grab. Maus- und Berührungsereignisse press werden ausgelöst, indem alle Elemente in Z-Reihenfolge von oben nach unten besucht werden: zuerst die untergeordneten Handler jedes Elements und dann das Item selbst. Zu dem Zeitpunkt, an dem ein Druckereignis ausgelöst wird, kann ein Handler je nach Bedarf entweder einen passiven oder einen exklusiven Griff ausführen. Wenn er passiv gegriffen wird, erhält er garantiert die Aktualisierungen und die Freigabe, auch wenn andere Objekte oder Handler in der Szene passiv oder exklusiv greifen. Einige Handler (z.B. PointHandler) können nur mit passiven Grabs arbeiten; andere benötigen exklusive Grabs; und wieder andere können mit passiven Grabs "lauern", bis sie erkennen, dass eine Geste ausgeführt wird, und dann den Übergang von passivem zu exklusivem Grab vollziehen. TapHandler Das Greifverhalten des Programms ist configurable.
Wenn ein Übergang zum Greifen angefordert wird, steuern PointerHandler::grabPermissions, QQuickItem::keepMouseGrab() und QQuickItem::keepTouchGrab(), ob der Übergang zugelassen wird.
Verwandte Informationen
© 2025 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.