QGestureRecognizer Class
Die Klasse QGestureRecognizer bietet die Infrastruktur für die Gestenerkennung. Mehr...
Kopfzeile: | #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 Mitglieder
Qt::GestureType | registerRecognizer(QGestureRecognizer *recognizer) |
void | unregisterRecognizer(Qt::GestureType type) |
Detaillierte Beschreibung
Gestenerkenner sind verantwortlich für die Erstellung und Verwaltung von QGesture Objekten und die Überwachung von Eingabeereignissen, die an QWidget und QGraphicsObject Unterklassen gesendet werden. QGestureRecognizer ist die Basisklasse für die Implementierung eigener Gesten.
Entwickler, die nur eine Gestenerkennung für Standardgesten benötigen, müssen diese Klasse nicht direkt verwenden. Instanzen werden hinter den Kulissen durch das Framework erstellt.
Einen Überblick über die Handhabung von Gesten in Qt und Informationen zur Verwendung von Gesten in Ihren Anwendungen finden Sie im Dokument Gesten in Widgets und Grafikansichten.
Erkennung von Gesten
Der Prozess der Erkennung von Gesten beinhaltet das Filtern von Eingabeereignissen, die an bestimmte Objekte gesendet werden, und das Ändern der zugehörigen QGesture Objekte, um relevante Informationen über die Benutzereingabe aufzunehmen.
Gesten werden erstellt, wenn das Framework create() aufruft, um Benutzereingaben für eine bestimmte Instanz einer QWidget oder QGraphicsObject Unterklasse zu verarbeiten. Ein QGesture Objekt wird für jedes Widget oder Element erstellt, das für die Verwendung von Gesten konfiguriert ist.
Sobald ein QGesture für ein Zielobjekt erstellt wurde, empfängt der Gestenerkenner Ereignisse für dieses Objekt in seiner recognize() Handler-Funktion.
Wenn eine Geste abgebrochen wird, wird die Funktion reset() aufgerufen, was dem Erkenner die Möglichkeit gibt, die entsprechenden Eigenschaften im entsprechenden QGesture Objekt zu aktualisieren.
Unterstützung für neue Gesten
Um Unterstützung für neue Gesten hinzuzufügen, müssen Sie von QGestureRecognizer ableiten, um eine benutzerdefinierte Erkennerklasse zu erstellen, eine Instanz dieser Klasse zu erzeugen und sie mit der Anwendung zu registrieren, indem Sie QGestureRecognizer::registerRecognizer() aufrufen. Sie können auch eine Unterklasse von QGesture erstellen, um eine benutzerdefinierte Gestenklasse zu erstellen, oder sich auf dynamische Eigenschaften verlassen, um spezifische Details der Geste auszudrücken, die Sie behandeln möchten.
Ihre benutzerdefinierte QGestureRecognizer-Unterklasse muss die Funktion recognize() reimplementieren, um die eingehenden Eingabeereignisse für die Unterklassen 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 Zustand des Erkennungsprozesses in dem mitgelieferten QGesture Objekt speichern. Die Funktion recognize() muss einen Wert von QGestureRecognizer::Result zurückgeben, der den Zustand der Erkennung für eine bestimmte Geste und ein bestimmtes Zielobjekt angibt. Dies bestimmt, ob ein Gestenereignis an ein Zielobjekt übermittelt wird oder nicht.
Wenn Sie eine Geste durch eine benutzerdefinierte QGesture Unterklasse darstellen möchten, müssen Sie die Funktion create() neu implementieren, um Instanzen Ihrer Gestenklasse zu erstellen. In ähnlicher Weise müssen Sie die Funktion reset() neu implementieren, wenn Ihre benutzerdefinierten Gestenobjekte speziell behandelt werden müssen, wenn eine Geste abgebrochen wird.
Siehe auch QGesture.
Dokumentation der Mitgliedstypen
enum QGestureRecognizer::ResultFlag
flags QGestureRecognizer::Result
Diese Aufzählung beschreibt das Ergebnis des aktuellen Schrittes der Ereignisfilterung in einem Gestenerkenner-Zustandsautomaten.
Das Ergebnis besteht aus einem Statuswert (einer von Ignore, MayBeGesture, TriggerGesture, FinishGesture, CancelGesture) und einem optionalen Hinweis (ConsumeEventHint).
Konstante | Wert | Beschreibung |
---|---|---|
QGestureRecognizer::Ignore | 0x0001 | Das Ereignis hat den Zustand des Erkenners nicht verändert. |
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 dies zu entscheiden. 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 einer QGestureEvent an das Ziel übergeben. |
QGestureRecognizer::FinishGesture | 0x0008 | Die Geste wurde erfolgreich abgeschlossen, und das entsprechende QGesture Objekt wird als Teil einer QGestureEvent an das Ziel übermittelt. |
QGestureRecognizer::CancelGesture | 0x0010 | Das Ereignis macht deutlich, dass es sich nicht um eine Geste handelt. Wenn sich der Gestenerkenner zuvor im Zustand GestureTriggered befand, wird die Geste abgebrochen und das entsprechende QGesture Objekt wird als Teil eines QGestureEvent an das Ziel übergeben. |
QGestureRecognizer::ConsumeEventHint | 0x0100 | Dieser Hinweis gibt an, dass das Gesten-Framework das gefilterte Ereignis verbrauchen und nicht an den Empfänger liefern soll. |
Der Result-Typ ist ein Typedef für QFlags<ResultFlag>. Er speichert eine ODER-Kombination von ResultFlag-Werten.
Siehe auch QGestureRecognizer::recognize().
Dokumentation der Mitgliedsfunktionen
QGestureRecognizer::QGestureRecognizer()
Konstruiert ein neues Gestenerkennungsobjekt.
[virtual noexcept]
QGestureRecognizer::~QGestureRecognizer()
Zerstört den Gestenerkenner.
[virtual]
QGesture *QGestureRecognizer::create(QObject *target)
Diese Funktion wird von Qt aufgerufen, um ein neues QGesture Objekt für das angegebene target (QWidget oder QGraphicsObject) zu erstellen.
Reimplementieren Sie diese Funktion, um ein benutzerdefiniertes QGesture-abgeleitetes Gestenobjekt zu erstellen, falls erforderlich.
Die Anwendung übernimmt das Eigentum an dem erstellten Gestenobjekt.
[pure virtual]
QGestureRecognizer::Result QGestureRecognizer::recognize(QGesture *gesture, QObject *watched, QEvent *event)
Verarbeitet das angegebene event für das watched Objekt, aktualisiert den Zustand des gesture Objekts wie erforderlich und gibt ein geeignetes Ergebnis für den aktuellen Erkennungsschritt zurück.
Diese Funktion wird vom Framework aufgerufen, um dem Erkenner zu ermöglichen, Eingabeereignisse zu filtern, die an QWidget oder QGraphicsObject Instanzen gesendet werden, die er überwacht.
Das Ergebnis zeigt an, wie viel von der Geste erkannt wurde. Der Zustand des gesture Objekts wird in Abhängigkeit vom Ergebnis gesetzt.
Siehe auch QGestureRecognizer::Result.
[static]
Qt::GestureType QGestureRecognizer::registerRecognizer(QGestureRecognizer *recognizer)
Registriert die angegebene recognizer im Gesten-Framework und gibt eine Gesten-ID für sie zurück.
Die Anwendung übernimmt das Eigentum an der recognizer und gibt die damit verbundene Gesten-ID zurück. Für Gestenerkenner, die benutzerdefinierte QGesture Objekte behandeln (d.h. solche, die Qt::CustomGesture in einer QGesture::gestureType() Funktion zurückgeben), ist der Rückgabewert eine generierte Gesten-ID mit gesetztem Qt::CustomGesture Flag.
Siehe auch unregisterRecognizer(), QGestureRecognizer::create(), und QGesture.
[virtual]
void QGestureRecognizer::reset(QGesture *gesture)
Diese Funktion wird vom Framework aufgerufen, um ein bestimmtes gesture zurückzusetzen.
Reimplementieren Sie diese Funktion, um zusätzliche Anforderungen für benutzerdefinierte QGesture Objekte zu implementieren. Dies kann notwendig sein, wenn Sie eine benutzerdefinierte QGesture implementieren, deren Eigenschaften beim Zurücksetzen der Geste besonders behandelt werden müssen.
[static]
void QGestureRecognizer::unregisterRecognizer(Qt::GestureType type)
Deregistriert alle Gestenerkenner des angegebenen type.
Siehe auch registerRecognizer().
© 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.