En esta página

Eventos de ratón

Una forma más moderna de manejar los eventos de todos los dispositivos señaladores, incluyendo el ratón y la pantalla táctil, es a través de los Manejadores de Entrada. Esta página describe el tipo original Qt Quick MouseArea , que fue diseñado inicialmente para manejar la entrada del ratón, y más tarde comenzó a manejar eventos de un solo toque (en forma de eventos sintéticos del ratón) en interfaces de usuario simples orientadas al tacto.

Tipos de ratón

Gestión de eventos de ratón

QML utiliza señales y manejadores para realizar interacciones con el ratón. En concreto, Qt Quick proporciona los tipos MouseArea y MouseEvent que permiten a los desarrolladores definir retrollamadas de JavaScript (también llamadas manejadores de señales), que aceptan eventos de ratón dentro de un área definida.

Definición de un área de ratón

El tipo MouseArea recibe eventos dentro de un área definida. Una forma rápida de definir esta área es anclar el MouseArea al área de su padre utilizando la propiedad anchors.fill. Si el padre es un Rectangle (o cualquier componente Item ), entonces el MouseArea llenará el área definida por las dimensiones del padre. También se puede definir un área mayor o menor que la del componente principal.

Rectangle {
    id: button
    width: 100; height: 100

    MouseArea {
        anchors.fill: parent
        onClicked: console.log("button clicked")
    }
    MouseArea {
        width:150; height: 75
        onClicked: console.log("irregular area clicked")
    }
}

Recepción de eventos

El tipo MouseArea emite señales en respuesta a diferentes gestos del ratón. La documentación del tipo MouseArea describe estos gestos con mayor detalle:

  • cancelado
  • pulsado
  • dobleClic
  • entró en
  • salido
  • positionChanged
  • pulsar y mantener
  • pulsado
  • liberado

Estas señales pueden tener callbacks que se invocan cuando se emiten las señales.

    MouseArea {
        anchors.fill: parent
        onClicked: console.log("area clicked")
        onDoubleClicked: console.log("area double clicked")
        onEntered: console.log("mouse entered the area")
        onExited: console.log("mouse left the area")
    }

Activación de gestos

Algunos gestos del ratón y clics de botones necesitan ser habilitados antes de que envíen o reciban eventos. Ciertas propiedades de MouseArea y MouseEvent habilitan estos gestos.

Para escuchar (o ignorar explícitamente) un determinado botón del ratón, establece el botón del ratón apropiado en la propiedad acceptedButtons.

Naturalmente, los eventos del ratón, como pulsaciones de botón y posiciones del ratón, se envían durante un clic del ratón. Por ejemplo, la propiedad containsMouse sólo recuperará su valor correcto durante una pulsación del ratón. La propiedad hoverEnabled habilitará los eventos del ratón y el posicionamiento incluso cuando no haya pulsaciones del botón del ratón. Establecer la propiedad hoverEnabled a true, a su vez habilitará la señal entered, exited, y positionChanged y sus respectivos manejadores de señal.

    MouseArea {
        hoverEnabled: true
        acceptedButtons: Qt.LeftButton | Qt.RightButton
        onEntered: console.log("mouse entered the area")
        onExited: console.log("mouse left the area")
    }

Además, para deshabilitar toda el área del ratón, establezca la propiedad MouseArea enabled a false.

Objeto MouseEvent

Las señales y sus llamadas de retorno reciben un objeto MouseEvent como parámetro. El objeto mouse contiene información sobre el evento del ratón. Por ejemplo, el botón del ratón que inició el evento se consulta a través de la propiedad mouse.button.

El objeto MouseEvent también puede ignorar un evento de ratón utilizando su propiedad accepted.

Aceptar más señales

Muchas de las señales se envían varias veces para reflejar diversos eventos del ratón, como el doble clic. Para facilitar la clasificación de los clics del ratón, el objeto MouseEvent tiene una propiedad accepted para desactivar la propagación de eventos.

Para obtener más información sobre el sistema de eventos de QML, lea el documento Señales y manejadores y sistema de eventos.

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