En esta página

Manejo de las entradas del usuario

Tipos de entradas de usuario admitidas

El módulo Qt Quick proporciona soporte para los tipos más comunes de entrada de usuario, incluyendo eventos de ratón y táctiles, entrada de texto y eventos de pulsación de teclas. Otros módulos ofrecen soporte para otros tipos de entradas de usuario.

En este artículo se explica cómo gestionar las entradas de usuario básicas. Para obtener información sobre la entrada audiovisual, consulte la documentación Qt Multimedia documentación.

Eventos de ratón y táctiles

Los manejadores de entrada permiten a las aplicaciones QML manejar eventos de ratón y táctiles. Por ejemplo, puedes crear un botón añadiendo un TapHandler a una Imagen, o a un Rectangle con un objeto Text dentro. TapHandler responde a los toques o clics de cualquier tipo de dispositivo señalador.

import QtQuick

Item {
    id: root

    width: 320
    height: 480

    Rectangle {
        color: "#272822"
        width: 320
        height: 480
    }

    Rectangle {
        id: rectangle
        x: 40
        y: 20
        width: 120
        height: 120
        color: "red"

        TapHandler {
            onTapped: rectangle.width += 10
        }
    }
}

Nota: Algunos tipos de elementos tienen su propia gestión de entrada incorporada. Por ejemplo, Flickable responde al arrastre con el ratón, al deslizamiento táctil y al desplazamiento con la rueda del ratón.

Eventos de teclado y botones

La pulsación de botones y teclas, desde los botones de un dispositivo, un teclado numérico o un teclado, puede gestionarse utilizando la propiedad adjunta Keys. Esta propiedad attached está disponible en todos los tipos derivados de Item, y funciona con la propiedad Item::focus para determinar qué tipo recibe el evento de tecla. Para el manejo simple de teclas, puedes establecer el foco a true en un solo Item y hacer todo el manejo de teclas allí.

import QtQuick

Item {
    id: root

    width: 320
    height: 480

    Rectangle {
        color: "#272822"
        width: 320
        height: 480
    }

    Rectangle {
        id: rectangle
        x: 40
        y: 20
        width: 120
        height: 120
        color: "red"

        focus: true
        Keys.onUpPressed: rectangle.y -= 10
        Keys.onDownPressed: rectangle.y += 10
        Keys.onLeftPressed: rectangle.x += 10
        Keys.onRightPressed: rectangle.x -= 10
    }
}

Para la entrada de texto, tenemos varios tipos QML para elegir. TextInput proporciona un texto editable de una sola línea sin estilo, mientras que TextField es más adecuado para campos de formulario en aplicaciones. TextEdit puede manejar texto editable de varias líneas, pero TextArea es una mejor alternativa, ya que añade estilo.

El siguiente fragmento de código muestra cómo utilizar estos tipos en una aplicación:

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts

ApplicationWindow {
    width: 300
    height: 200
    visible: true

    ColumnLayout {
        anchors.fill: parent
        TextField {
            id: singleline
            text: "Initial Text"
            Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
            Layout.margins: 5
            background: Rectangle {
               implicitWidth: 200
               implicitHeight: 40
               border.color: singleline.focus ? "#21be2b" : "lightgray"
               color: singleline.focus ? "lightgray" : "transparent"
            }
        }

        TextArea {
            id: multiline
            placeholderText: "Initial text\n...\n...\n"
            Layout.alignment: Qt.AlignLeft
            Layout.fillWidth: true
            Layout.fillHeight: true
            Layout.margins: 5
            background: Rectangle {
               implicitWidth: 200
               implicitHeight: 100
               border.color: multiline.focus ? "#21be2b" : "lightgray"
               color: multiline.focus ? "lightgray" : "transparent"
            }
        }
    }
}

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