QGestureRecognizer Class
Die Klasse „QGestureRecognizer“ stellt die Infrastruktur für die Gestenerkennung bereit. Mehr...
| Header: | #include <QGestureRecognizer> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
Öffentliche Typen
| flags | Result |
| enum | ResultFlag { Ignore, MayBeGesture, TriggerGesture, FinishGesture, CancelGesture, ConsumeEventHint } |
Öffentliche Funktionen
| QGestureRecognizer() | |
| virtual | ~QGestureRecognizer() |
| virtual QGesture * | create(QObject *target) |
| virtual QGestureRecognizer::Result | recognize(QGesture *gesture, QObject *watched, QEvent *event) = 0 |
| virtual void | reset(QGesture *gesture) |
Statische öffentliche Elemente
| Qt::GestureType | registerRecognizer(QGestureRecognizer *recognizer) |
| void | unregisterRecognizer(Qt::GestureType type) |
Ausführliche Beschreibung
Gesten-Erkennungsmodule sind für die Erstellung und Verwaltung von „ QGesture “-Objekten sowie für die Überwachung von Eingabeereignissen zuständig, die an die Unterklassen „ QWidget “ und „ QGraphicsObject “ gesendet werden. „QGestureRecognizer“ ist die Basisklasse für die Implementierung benutzerdefinierter Gesten.
Entwickler, die lediglich die Gestenerkennung für Standardgesten bereitstellen müssen, müssen diese Klasse nicht direkt verwenden. Instanzen werden vom Framework im Hintergrund erstellt.
Einen Überblick über die Gestenverarbeitung in Qt sowie Informationen zur Verwendung von Gesten in Ihren Anwendungen finden Sie im Dokument „Gesten in Widgets und der Grafikansicht “.
Erkennen von Gesten
Der Prozess der Gestenerkennung umfasst das Filtern von Eingabeereignissen, die an bestimmte Objekte gesendet werden, sowie das Anpassen der zugehörigen „ QGesture “-Objekte, um relevante Informationen über die Benutzereingabe einzubeziehen.
Gesten werden erzeugt, wenn das Framework ` create()` aufruft, um Benutzereingaben für eine bestimmte Instanz einer Unterklasse von ` QWidget ` oder ` QGraphicsObject ` zu verarbeiten. Für jedes Widget oder Element, das für die Verwendung von Gesten konfiguriert ist, wird ein ` QGesture `-Objekt erstellt.
Sobald ein ` QGesture ` für ein Zielobjekt erstellt wurde, empfängt der Gestenerkennungsmechanismus Ereignisse dafür in seiner ` recognize()`-Handlerfunktion.
Wird eine Geste abgebrochen, wird die Funktion ` reset()` aufgerufen, wodurch der Erkenner die Möglichkeit erhält, die entsprechenden Eigenschaften im zugehörigen ` QGesture `-Objekt zu aktualisieren.
Unterstützung neuer Gesten
Um Unterstützung für neue Gesten hinzuzufügen, müssen Sie von `QGestureRecognizer` ableiten, um eine benutzerdefinierte Erkennungsklasse zu erstellen, eine Instanz dieser Klasse zu konstruieren und sie durch Aufruf von ` QGestureRecognizer::registerRecognizer()` bei der Anwendung zu registrieren. Sie können auch eine Unterklasse von ` QGesture ` erstellen, um eine benutzerdefinierte Gestenklasse zu definieren, oder auf dynamische Eigenschaften zurückgreifen, um spezifische Details der zu verarbeitenden Geste auszudrücken.
Ihre benutzerdefinierte QGestureRecognizer-Unterklasse muss die Funktion ` recognize()` neu implementieren, um die eingehenden Eingabeereignisse für Unterklassen von ` QWidget ` und ` QGraphicsObject ` zu verarbeiten und zu filtern. Obwohl die Logik für die Gestenerkennung in dieser Funktion implementiert ist, können Sie dauerhafte Informationen über den Status des Erkennungsprozesses im bereitgestellten ` QGesture `-Objekt speichern. Die Funktion ` recognize()` muss einen Wert vom Typ ` QGestureRecognizer::Result ` zurückgeben, der den Erkennungsstatus für eine bestimmte Geste und ein bestimmtes Zielobjekt angibt. Dies bestimmt, ob ein Gestenereignis an ein Zielobjekt weitergeleitet wird oder nicht.
Wenn Sie eine Geste durch eine benutzerdefinierte Unterklasse von ` QGesture ` darstellen möchten, müssen Sie die Funktion ` create()` neu implementieren, um Instanzen Ihrer Geste-Klasse zu erstellen. Ebenso müssen Sie möglicherweise die Funktion ` reset()` neu implementieren, falls Ihre benutzerdefinierten Geste-Objekte bei Abbruch einer Geste speziell behandelt werden müssen.
Siehe auch „ QGesture “.
Dokumentation zu Mitgliedstypen
enum QGestureRecognizer::ResultFlag
flags QGestureRecognizer::Result
Diese Enumeration beschreibt das Ergebnis des aktuellen Ereignisfilterungsschritts in einer Zustandsmaschine eines Gestenerkenners.
Das Ergebnis besteht aus einem Zustandswert (entweder „Ignore“, „MayBeGesture“, „TriggerGesture“, „FinishGesture“ oder „CancelGesture“) und einem optionalen Hinweis („ConsumeEventHint“).
| Konstante | Wert | Beschreibung |
|---|---|---|
QGestureRecognizer::Ignore | 0x0001 | Das Ereignis ändert den Zustand des Erkenners nicht. |
QGestureRecognizer::MayBeGesture | 0x0002 | Das Ereignis hat den internen Zustand des Erkenners verändert, aber es ist noch nicht klar, ob es sich um eine Geste handelt oder nicht. Der Erkenner muss weitere Ereignisse filtern, um eine Entscheidung zu treffen. Gestenerkenner im Zustand „MayBeGesture“ können automatisch zurückgesetzt werden, wenn sie zu lange brauchen, um Gesten zu erkennen. |
QGestureRecognizer::TriggerGesture | 0x0004 | Die Geste wurde ausgelöst, und das entsprechende „ QGesture “-Objekt wird als Teil eines „ QGestureEvent “ an das Ziel übermittelt. |
QGestureRecognizer::FinishGesture | 0x0008 | Die Geste wurde erfolgreich abgeschlossen, und das entsprechende „ QGesture “-Objekt wird als Teil eines „ QGestureEvent “ an das Ziel übermittelt. |
QGestureRecognizer::CancelGesture | 0x0010 | Das Ereignis hat deutlich gemacht, dass es sich nicht um eine Geste handelt. Befand sich der Gestenerkenner zuvor im Zustand „GestureTriggered“, wird die Geste abgebrochen und das entsprechende „ QGesture “-Objekt wird als Teil eines „ QGestureEvent “ an das Ziel übermittelt. |
QGestureRecognizer::ConsumeEventHint | 0x0100 | Dieser Hinweis legt fest, dass das Gesten-Framework das gefilterte Ereignis verarbeiten und nicht an den Empfänger weiterleiten soll. |
Der Typ „Result“ ist ein `typedef` für ` QFlags<ResultFlag>`. Er speichert eine ODER-Kombination von `ResultFlag`-Werten.
Siehe auch „ QGestureRecognizer::recognize()“.
Dokumentation der Mitgliedsfunktionen
QGestureRecognizer::QGestureRecognizer()
Erstellt ein neues Gestenerkennungsobjekt.
[virtual noexcept] QGestureRecognizer::~QGestureRecognizer()
Löst den Gestenerkenner auf.
[virtual] QGesture *QGestureRecognizer::create(QObject *target)
Diese Funktion wird von Qt XML aufgerufen, um ein neues QGesture -Objekt für das angegebene target (QWidget oder QGraphicsObject) zu erstellen.
Implementieren Sie diese Funktion bei Bedarf neu, um ein benutzerdefiniertes, von ` QGesture` abgeleitetes Gestenobjekt zu erstellen.
QApplication übernimmt die Verantwortung für das erstellte Gestenobjekt.
[pure virtual] QGestureRecognizer::Result QGestureRecognizer::recognize(QGesture *gesture, QObject *watched, QEvent *event)
Behandelt die angegebene „ event “ für das „ watched “-Objekt, aktualisiert dabei bei Bedarf den Status des „ gesture “-Objekts und gibt ein geeignetes Ergebnis für den aktuellen Erkennungsschritt zurück.
Diese Funktion wird vom Framework aufgerufen, damit der Erkenner Eingabeereignisse filtern kann, die an von ihm überwachte Instanzen von ` QWidget ` oder ` QGraphicsObject ` gesendet werden.
Das Ergebnis gibt an, inwieweit die Geste erkannt wurde. Der Zustand des Objekts „ gesture “ wird entsprechend dem Ergebnis festgelegt.
Siehe auch „ QGestureRecognizer::Result “.
[static] Qt::GestureType QGestureRecognizer::registerRecognizer(QGestureRecognizer *recognizer)
Registriert den angegebenen Gestenerkennungs- recognizer im Gesten-Framework und gibt eine Gesten-ID dafür zurück.
QApplication Übernimmt die Verantwortung für das ` recognizer` und diese Funktion gibt die damit verknüpfte Gesten-Typ-ID zurück. Bei Gestenerkennern, die benutzerdefinierte ` QGesture `-Objekte verarbeiten (d. h. solche, die in der Funktion ` QGesture::gestureType()` ` Qt::CustomGesture ` zurückgeben), ist der Rückgabewert eine generierte Gesten-ID, bei der das Flag ` Qt::CustomGesture ` gesetzt ist.
Siehe auch „ unregisterRecognizer()“, „ QGestureRecognizer::create()“ und „ QGesture “.
[virtual] void QGestureRecognizer::reset(QGesture *gesture)
Diese Funktion wird von Qt XML aufgerufen, um ein bestimmtes „ gesture “-Objekt zurückzusetzen.
Implementieren Sie diese Funktion neu, um zusätzliche Anforderungen für benutzerdefinierte „ QGesture “-Objekte zu erfüllen. Dies kann erforderlich sein, wenn Sie ein benutzerdefiniertes „ QGesture “ implementieren, dessen Eigenschaften beim Zurücksetzen der Geste einer besonderen Behandlung bedürfen.
[static] void QGestureRecognizer::unregisterRecognizer(Qt::GestureType type)
Hebt die Registrierung aller Gestenerkennungsmodule des angegebenen „ type “ auf.
Siehe auch registerRecognizer().
© 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.