Qt Quick Manejadores de entrada
Qt Quick Los manejadores de entrada son un conjunto de tipos QML utilizados para manejar events desde el teclado, el tacto, el ratón y el lápiz devices en una interfaz de usuario. A diferencia de los elementos que manejan eventos, como MouseArea y Flickable, los manejadores de entrada son explícitamente no visuales, requieren menos memoria y están pensados para ser utilizados en mayor número: una instancia de manejador por aspecto de interacción. Cada instancia de controlador de entrada gestiona determinados eventos en nombre de su elemento parent. De este modo, las preocupaciones visuales y de comportamiento están mejor separadas, y el comportamiento se construye mediante una composición de grano más fino.
En Qt Quick Examples - Pointer Handlers se muestran algunos casos de uso.
La propiedad adjunta preexistente Keys es similar en concepto, por lo que nos referimos a los manejadores orientados a dispositivos señaladores más Keys juntos como el conjunto de Manejadores de Entrada. Esperamos ofrecer más casos de uso de propiedades adjuntas en futuras versiones de Qt.
Manejadores de entrada
Manejador para arrastrar | |
Manejador para ratón y tableta | |
Soporta navegación por teclas de flecha | |
Proporciona manejo de teclas a Items | |
Controlador de gestos de pellizco | |
Manejador para reaccionar a un único punto de contacto | |
Controlador de toques y clics | |
Controlador de la rueda del ratón |
Características principales
Algunas de las características clave son:
- Maneja las pulsaciones de teclas dentro del elemento enfocado
- Gestión de gestos como pulsar o arrastrar, independientemente del dispositivo del que procedan.
- Manejar gestos de diferentes clases de dispositivos de diferentes maneras
- Cada elemento puede tener un número ilimitado de manipuladores
Manejadores que manipulan elementos
Algunos Manejadores añaden interactividad simplemente por ser declarados dentro de un Elemento:
import QtQuick Rectangle { width: 100 height: 100 color: "lightsteelblue" DragHandler { } }
Propiedades y Señales de los Manejadores
Todos los Manejadores tienen propiedades que pueden ser usadas en enlaces, y señales que pueden ser manejadas para reaccionar a la entrada:
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() }
Agarre de Punteros
Un concepto importante de los Manejadores de Puntero es el tipo de captura que realizan. El único tipo de agarre que puede realizar un objeto es el agarre exclusivo: por ejemplo, si llamas a QPointerEvent::setExclusiveGrabber(), los siguientes movimientos del ratón y el evento de liberación del ratón sólo se enviarán a ese objeto. (Como solución a esta exclusividad, ver QQuickItem::setFiltersChildMouseEvents() y QQuickItem::childMouseEventFilter().) Sin embargo, los Manejadores de Puntero tienen un mecanismo adicional disponible: el passive grab. Los eventos de ratón y toque press son entregados visitando todos los Ítems en orden Z descendente: primero los Manejadores hijos de cada Ítem, y luego el propio Item. En el momento en que se produce un evento de pulsación, un Manejador puede tomar un agarre pasivo o exclusivo dependiendo de sus necesidades. Si toma una captura pasiva, se garantiza que recibirá las actualizaciones y la liberación, incluso si otros elementos o manipuladores de la escena toman cualquier tipo de captura, pasiva o exclusiva. Algunos Handlers (como PointHandler) sólo pueden trabajar con agarradores pasivos; otros requieren agarradores exclusivos; y otros pueden "acechar" con agarradores pasivos hasta que detectan que se está realizando un gesto, y entonces hacen la transición de agarrador pasivo a agarrador exclusivo. TapHandler El comportamiento de agarre de 's es configurable.
Cuando se solicita una transición de agarre, PointerHandler::grabPermissions, QQuickItem::keepMouseGrab() y QQuickItem::keepTouchGrab() controlan si se permitirá la transición.
Información relacionada
© 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.