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

DragHandler

Handler für das Ziehen

HoverHandler

Handler für Maus- und Tablet-Hover

KeyNavigation

Unterstützt Tastennavigation durch Pfeiltasten

Keys

Bietet Tastenhandling für Items

PinchHandler

Handler für Pinch-Gesten

PointHandler

Handler für das Reagieren auf einen einzelnen Touchpoint

TapHandler

Handler für Taps und Klicks

WheelHandler

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.

© 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.