Sur cette page

QGestureRecognizer Class

La classe QGestureRecognizer fournit l'infrastructure nécessaire à la reconnaissance des gestes. Plus d'informations...

En-tête : #include <QGestureRecognizer>
CMake : find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake : QT += widgets

Types publics

flags Result
enum ResultFlag { Ignore, MayBeGesture, TriggerGesture, FinishGesture, CancelGesture, ConsumeEventHint }

Fonctions publiques

QGestureRecognizer()
virtual ~QGestureRecognizer()
virtual QGesture *create(QObject *target)
virtual QGestureRecognizer::Result recognize(QGesture *gesture, QObject *watched, QEvent *event) = 0
virtual void reset(QGesture *gesture)

Membres publics statiques

Qt::GestureType registerRecognizer(QGestureRecognizer *recognizer)
void unregisterRecognizer(Qt::GestureType type)

Description détaillée

Les reconnaissances de gestes sont responsables de la création et de la gestion des objets QGesture et de la surveillance des événements d'entrée envoyés aux sous-classes QWidget et QGraphicsObject. QGestureRecognizer est la classe de base pour l'implémentation de gestes personnalisés.

Les développeurs qui ont seulement besoin de fournir une reconnaissance gestuelle pour des gestes standard n'ont pas besoin d'utiliser cette classe directement. Les instances seront créées en coulisses par le framework.

Pour une vue d'ensemble de la gestion des gestes dans Qt Widgets et des informations sur l'utilisation des gestes dans vos applications, consultez le document Gestures in Widgets and Graphics View (Gestes dans les widgets et les vues graphiques).

Reconnaissance des gestes

Le processus de reconnaissance des gestes implique le filtrage des événements d'entrée envoyés à des objets spécifiques et la modification des objets QGesture associés pour inclure des informations pertinentes sur l'entrée de l'utilisateur.

Les gestes sont créés lorsque le cadre de travail appelle create() pour gérer l'entrée de l'utilisateur pour une instance particulière d'une sous-classe QWidget ou QGraphicsObject. Un objet QGesture est créé pour chaque widget ou élément configuré pour utiliser des gestes.

Une fois qu'un objet QGesture a été créé pour un objet cible, l'outil de reconnaissance gestuelle recevra des événements pour cet objet dans sa fonction de traitement recognize().

Lorsqu'un geste est annulé, la fonction reset() est appelée, ce qui permet à l'outil de reconnaissance de mettre à jour les propriétés appropriées dans l'objet QGesture correspondant.

Prise en charge de nouveaux gestes

Pour ajouter la prise en charge de nouveaux gestes, vous devez dériver de QGestureRecognizer pour créer une classe de reconnaissance personnalisée, construire une instance de cette classe et l'enregistrer dans l'application en appelant QGestureRecognizer::registerRecognizer(). Vous pouvez également sous-classer QGesture pour créer une classe de geste personnalisée, ou vous appuyer sur des propriétés dynamiques pour exprimer les détails spécifiques du geste que vous souhaitez gérer.

Votre sous-classe QGestureRecognizer personnalisée doit réimplémenter la fonction recognize() pour gérer et filtrer les événements d'entrée entrants pour les sous-classes QWidget et QGraphicsObject. Bien que la logique de reconnaissance des gestes soit implémentée dans cette fonction, vous pouvez stocker des informations persistantes sur l'état du processus de reconnaissance dans l'objet QGesture fourni. La fonction recognize() doit renvoyer une valeur de QGestureRecognizer::Result qui indique l'état de la reconnaissance pour un geste et un objet cible donnés. Cela permet de déterminer si un événement de geste sera transmis ou non à un objet cible.

Si vous choisissez de représenter un geste par une sous-classe QGesture personnalisée, vous devrez réimplémenter la fonction create() pour construire des instances de votre classe de geste. De même, vous devrez peut-être réimplémenter la fonction reset() si vos objets gestuels personnalisés doivent faire l'objet d'un traitement spécial lorsqu'un geste est annulé.

Voir également QGesture.

Documentation des types de membres

enum QGestureRecognizer::ResultFlag
flags QGestureRecognizer::Result

Cette énumération décrit le résultat de l'étape de filtrage de l'événement en cours dans une machine d'état de reconnaissance de geste.

Le résultat consiste en une valeur d'état (l'une des valeurs suivantes : Ignore, MayBeGesture, TriggerGesture, FinishGesture, CancelGesture) et un indice facultatif (ConsumeEventHint).

ConstanteValeurDescription de l'événement
QGestureRecognizer::Ignore0x0001L'événement ne modifie pas l'état du dispositif de reconnaissance.
QGestureRecognizer::MayBeGesture0x0002L'événement a modifié l'état interne du système de reconnaissance, mais il n'est pas encore clair s'il s'agit d'un geste ou non. L'outil de reconnaissance doit filtrer davantage d'événements pour prendre une décision. Les dispositifs de reconnaissance de geste dans l'état MayBeGesture peuvent être réinitialisés automatiquement s'ils mettent trop de temps à reconnaître les gestes.
QGestureRecognizer::TriggerGesture0x0004Le geste a été déclenché et l'objet QGesture approprié sera livré à la cible dans le cadre d'un QGestureEvent.
QGestureRecognizer::FinishGesture0x0008Le geste a été terminé avec succès et l'objet QGesture approprié sera livré à la cible dans le cadre d'un QGestureEvent.
QGestureRecognizer::CancelGesture0x0010L'événement indique clairement qu'il ne s'agit pas d'un geste. Si l'outil de reconnaissance gestuelle était déjà dans l'état GestureTriggered, le geste est annulé et l'objet QGesture approprié sera livré à la cible dans le cadre d'un QGestureEvent.
QGestureRecognizer::ConsumeEventHint0x0100Cette indication précise que le cadre gestuel doit consommer l'événement filtré et ne pas le transmettre au destinataire.

Le type Result est un typedef pour QFlags<ResultFlag>. Il stocke une combinaison OU de valeurs ResultFlag.

Voir également QGestureRecognizer::recognize().

Documentation des fonctions membres

QGestureRecognizer::QGestureRecognizer()

Construit un nouvel objet de reconnaissance de gestes.

[virtual noexcept] QGestureRecognizer::~QGestureRecognizer()

Détruit l'outil de reconnaissance des gestes.

[virtual] QGesture *QGestureRecognizer::create(QObject *target)

Cette fonction est appelée par Qt XML pour créer un nouvel objet QGesture pour l'objet target (QWidget ou QGraphicsObject) donné.

Réimplémentez cette fonction pour créer un objet gestuel personnalisé dérivé de QGesture si nécessaire.

QApplication prend la propriété de l'objet gestuel créé.

[pure virtual] QGestureRecognizer::Result QGestureRecognizer::recognize(QGesture *gesture, QObject *watched, QEvent *event)

Traite l'objet event donné pour l'objet watched, en mettant à jour l'état de l'objet gesture si nécessaire, et renvoie un résultat approprié pour l'étape de reconnaissance en cours.

Cette fonction est appelée par le cadre pour permettre à l'outil de reconnaissance de filtrer les événements d'entrée envoyés aux instances QWidget ou QGraphicsObject qu'il surveille.

Le résultat reflète le degré de reconnaissance du geste. L'état de l'objet gesture est défini en fonction du résultat.

Voir également QGestureRecognizer::Result.

[static] Qt::GestureType QGestureRecognizer::registerRecognizer(QGestureRecognizer *recognizer)

Enregistre le site recognizer donné dans le cadre gestuel et renvoie un identifiant de geste pour celui-ci.

QApplication prend possession de l'objet recognizer, et cette fonction renvoie l'ID du type de geste qui lui est associé. Pour les reconnaissances gestuelles qui gèrent des objets QGesture personnalisés (ceux qui renvoient Qt::CustomGesture dans une fonction QGesture::gestureType()), la valeur de retour est un ID de geste généré avec l'indicateur Qt::CustomGesture activé.

Voir aussi unregisterRecognizer(), QGestureRecognizer::create() et QGesture.

[virtual] void QGestureRecognizer::reset(QGesture *gesture)

Cette fonction est appelée par Qt XML pour réinitialiser un objet gesture.

Réimplémentez cette fonction pour mettre en œuvre des exigences supplémentaires pour les objets QGesture personnalisés. Cela peut s'avérer nécessaire si vous implémentez un QGesture personnalisé dont les propriétés nécessitent un traitement spécial lorsque le geste est réinitialisé.

[static] void QGestureRecognizer::unregisterRecognizer(Qt::GestureType type)

Désenregistre tous les reconnaisseurs de gestes de l'adresse type spécifiée.

Voir également 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.