Sur cette page

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.