Gestion des entrées utilisateur
Types d'entrées utilisateur pris en charge
Le module Qt Quick prend en charge les types d'entrée utilisateur les plus courants, notamment les événements liés à la souris et au toucher, la saisie de texte et les événements liés à l'appui sur une touche. D'autres modules prennent en charge d'autres types d'entrées utilisateur.
Cet article explique comment gérer les entrées utilisateur de base. Pour plus d'informations sur les entrées audiovisuelles, voir la documentation du module Qt Multimedia documentation.
Événements liés à la souris et au toucher
Les gestionnaires d'entrée permettent aux applications QML de gérer les événements liés à la souris et au toucher. Par exemple, vous pouvez créer un bouton en ajoutant un TapHandler à une image ou à un Rectangle contenant un objet Text. L'objet TapHandler réagit aux pressions ou aux clics sur n'importe quel type de dispositif de pointage.
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 } } }
Remarque : certains types d'éléments ont leur propre gestion intégrée des entrées. Par exemple, Flickable réagit au glissement de la souris, au toucher et au défilement de la molette de la souris.
Événements liés au clavier et aux boutons
Les pressions sur les boutons et les touches, à partir des boutons d'un périphérique, d'un pavé numérique ou d'un clavier, peuvent toutes être gérées à l'aide de la propriété attached (attachée) de Keys. Cette propriété est disponible pour tous les types dérivés de Item et fonctionne avec la propriété Item::focus pour déterminer quel type reçoit l'événement de touche. Pour une gestion simple des touches, vous pouvez mettre le focus à true sur un seul Item et y gérer toutes les touches.
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 } }
Pour la saisie de texte, nous avons le choix entre plusieurs types QML. TextInput fournit un texte éditable sur une seule ligne sans style, tandis que TextField convient mieux aux champs de formulaire dans les applications. TextEdit peut gérer un texte éditable sur plusieurs lignes, mais TextArea est une meilleure alternative car il ajoute du style.
L'extrait suivant montre comment utiliser ces types dans votre application :
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.