En esta página

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

DragHandler

Manejador para arrastrar

HoverHandler

Manejador para ratón y tableta

KeyNavigation

Soporta navegación por teclas de flecha

Keys

Proporciona manejo de teclas a Items

PinchHandler

Controlador de gestos de pellizco

PointHandler

Manejador para reaccionar a un único punto de contacto

TapHandler

Controlador de toques y clics

WheelHandler

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.

© 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.