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.