En esta página

QGestureRecognizer Class

La clase QGestureRecognizer proporciona la infraestructura para el reconocimiento de gestos. Más...

Cabecera: #include <QGestureRecognizer>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets

Tipos Públicos

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

Funciones públicas

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

Miembros públicos estáticos

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

Descripción detallada

Los reconocedores de gestos son responsables de crear y gestionar los objetos QGesture y de monitorizar los eventos de entrada enviados a las subclases QWidget y QGraphicsObject. QGestureRecognizer es la clase base para implementar gestos personalizados.

Los desarrolladores que sólo necesitan proporcionar reconocimiento de gestos para gestos estándar no necesitan utilizar esta clase directamente. El framework creará las instancias entre bastidores.

Para una visión general del manejo de gestos en Qt e información sobre el uso de gestos en tus aplicaciones, consulta el documento Gestures in Widgets and Graphics View.

Reconocimiento de gestos

El proceso de reconocimiento de gestos implica filtrar los eventos de entrada enviados a objetos específicos, y modificar los objetos QGesture asociados para incluir información relevante sobre la entrada del usuario.

Los gestos se crean cuando el framework llama a create() para manejar la entrada del usuario para una instancia particular de una subclase QWidget o QGraphicsObject. Se crea un objeto QGesture para cada widget o elemento configurado para utilizar gestos.

Una vez creado un objeto QGesture para un objeto de destino, el reconocedor de gestos recibirá eventos para él en su función manejadora recognize().

Cuando se cancela un gesto, se llama a la función reset(), dando al reconocedor la oportunidad de actualizar las propiedades apropiadas en el objeto QGesture correspondiente.

Soporte de nuevos gestos

Para añadir soporte para nuevos gestos, es necesario derivar de QGestureRecognizer para crear una clase de reconocedor personalizada, construir una instancia de esta clase y registrarla con la aplicación llamando a QGestureRecognizer::registerRecognizer(). También puedes subclasificar QGesture para crear una clase de gesto personalizada, o basarte en propiedades dinámicas para expresar detalles específicos del gesto que quieres manejar.

Tu subclase personalizada de QGestureRecognizer necesita reimplementar la función recognize() para manejar y filtrar los eventos de entrada entrantes para las subclases QWidget y QGraphicsObject. Aunque la lógica para el reconocimiento de gestos se implementa en esta función, puede almacenar información persistente sobre el estado del proceso de reconocimiento en el objeto QGesture suministrado. La función recognize() debe devolver un valor de QGestureRecognizer::Result que indique el estado del reconocimiento para un gesto y un objeto de destino dados. Esto determina si se enviará o no un evento de gesto a un objeto de destino.

Si decides representar un gesto mediante una subclase personalizada de QGesture, deberás reimplementar la función create() para construir instancias de tu clase de gesto. Del mismo modo, es posible que tenga que reimplementar la función reset() si sus objetos gestuales personalizados necesitan un tratamiento especial cuando se cancela un gesto.

Véase también QGesture.

Documentación de tipos de miembros

enum QGestureRecognizer::ResultFlag
flags QGestureRecognizer::Result

Este enum describe el resultado del paso de filtrado de eventos actual en una máquina de estados de un reconocedor de gestos.

El resultado consiste en un valor de estado (uno de Ignore, MayBeGesture, TriggerGesture, FinishGesture, CancelGesture) y una sugerencia opcional (ConsumeEventHint).

ConstanteValorDescripción
QGestureRecognizer::Ignore0x0001El evento no cambia el estado del reconocedor.
QGestureRecognizer::MayBeGesture0x0002El evento ha cambiado el estado interno del reconocedor, pero aún no está claro si se trata de un gesto o no. El reconocedor necesita filtrar más eventos para decidir. Los reconocedores de gestos en el estado MayBeGesture pueden restablecerse automáticamente si tardan demasiado en reconocer gestos.
QGestureRecognizer::TriggerGesture0x0004El gesto se ha desencadenado y el objeto QGesture apropiado se entregará al objetivo como parte de un QGestureEvent.
QGestureRecognizer::FinishGesture0x0008El gesto ha finalizado con éxito y el objeto QGesture apropiado será entregado al objetivo como parte de un QGestureEvent.
QGestureRecognizer::CancelGesture0x0010El evento ha dejado claro que no se trata de un gesto. Si el reconocedor de gestos se encontraba antes en el estado GestureTriggered, entonces el gesto se cancela y el objeto QGesture apropiado se entregará al objetivo como parte de un QGestureEvent.
QGestureRecognizer::ConsumeEventHint0x0100Esta sugerencia especifica que el marco de reconocimiento de gestos debe consumir el evento filtrado y no entregarlo al receptor.

El tipo Result es un typedef para QFlags<ResultFlag>. Almacena una combinación OR de valores ResultFlag.

Véase también QGestureRecognizer::recognize().

Documentación de las funciones miembro

QGestureRecognizer::QGestureRecognizer()

Construye un nuevo objeto reconocedor de gestos.

[virtual noexcept] QGestureRecognizer::~QGestureRecognizer()

Destruye el reconocedor de gestos.

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

Esta función es llamada por Qt para crear un nuevo objeto QGesture para el target (QWidget o QGraphicsObject) dado.

Reimplemente esta función para crear un objeto gestual personalizado derivado de QGesture si es necesario.

QApplication toma posesión del objeto gestual creado.

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

Maneja el event dado para el objeto watched, actualizando el estado del objeto gesture según sea necesario, y devuelve un resultado adecuado para el paso de reconocimiento actual.

Esta función es llamada por el framework para permitir al reconocedor filtrar los eventos de entrada enviados a las instancias QWidget o QGraphicsObject que está monitorizando.

El resultado refleja en qué medida se ha reconocido el gesto. El estado del objeto gesture se establece en función del resultado.

Véase también QGestureRecognizer::Result.

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

Registra el recognizer dado en el marco de gestos y devuelve un ID de gesto para él.

QApplication toma posesión del recognizer, y esta función devuelve el ID de tipo de gesto asociado a él. Para los reconocedores de gestos que manejan objetos QGesture personalizados (aquellos que devuelven Qt::CustomGesture en una función QGesture::gestureType()), el valor devuelto es un ID de gesto generado con la bandera Qt::CustomGesture activada.

Véase también unregisterRecognizer(), QGestureRecognizer::create() y QGesture.

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

Esta función es llamada por Qt para restablecer un determinado gesture.

Reimplemente esta función para implementar requisitos adicionales para objetos QGesture personalizados. Esto puede ser necesario si implementa un QGesture personalizado cuyas propiedades necesitan un manejo especial cuando se restablece el gesto.

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

Anula el registro de todos los reconocedores de gestos de la dirección type especificada.

Véase también 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.