Sur cette page

Événements liés à la souris

Les gestionnaires d'entrée constituent un moyen plus moderne de gérer les événements provenant de tous les dispositifs de pointage, y compris la souris et l'écran tactile. Cette page décrit le type original Qt Quick MouseArea , qui a été initialement conçu pour gérer l'entrée de la souris, et qui a ensuite commencé à gérer des événements à touche unique (sous la forme d'événements souris synthétiques) dans des interfaces utilisateur simples orientées vers le toucher.

Types de souris

Gestion des événements de la souris

QML utilise des signaux et des gestionnaires pour gérer les interactions avec la souris. Plus précisément, Qt Quick fournit les types MouseArea et MouseEvent qui permettent aux développeurs de définir des rappels JavaScript (également appelés gestionnaires de signaux), qui acceptent les événements de la souris dans une zone définie.

Définition d'une zone de souris

Le type MouseArea reçoit des événements dans une zone définie. Une façon rapide de définir cette zone est d'ancrer MouseArea à la zone de son parent à l'aide de la propriété anchors.fill. Si le parent est un Rectangle (ou tout autre composant Item ), le MouseArea remplira la zone définie par les dimensions du parent. Il est également possible de définir une zone plus petite ou plus grande que le parent.

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")
    }
}

Réception d'événements

Le type MouseArea émet des signaux en réponse à différents événements liés à la souris. La documentation du type MouseArea décrit ces gestes plus en détail :

  • annulé
  • cliqué
  • double-cliqué
  • entré
  • quitté
  • positionChanged
  • pressé et maintenu
  • pressé
  • libéré

Ces signaux peuvent avoir des rappels qui sont invoqués lorsque les signaux sont émis.

    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")
    }

Activation des gestes

Certains gestes de la souris et certains clics de bouton doivent être activés avant d'envoyer ou de recevoir des événements. Certaines propriétés MouseArea et MouseEvent activent ces gestes.

Pour écouter (ou ignorer explicitement) un certain bouton de la souris, attribuez la propriété acceptedButtons au bouton de la souris concerné.

Naturellement, les événements de la souris, tels que les pressions sur les boutons et les positions de la souris, sont envoyés lors d'un clic de souris. Par exemple, la propriété containsMouse ne récupérera sa valeur correcte que lors d'un clic de souris. La propriété hoverEnabled activera les événements et le positionnement de la souris même si aucun bouton de la souris n'est enfoncé. La définition de la propriété hoverEnabled à true, à son tour, activera les signaux entered, exited et positionChanged et leurs gestionnaires de signaux respectifs.

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

En outre, pour désactiver toute la zone de la souris, définissez la propriété MouseArea enabled à false.

Objet MouseEvent

Les signaux et leurs rappels reçoivent un objet MouseEvent en tant que paramètre. L'objet mouse contient des informations sur l'événement de la souris. Par exemple, le bouton de la souris qui a déclenché l'événement est interrogé par le biais de la propriété mouse.button.

L'objet MouseEvent peut également ignorer un événement souris à l'aide de sa propriété accepted.

Accepter d'autres signaux

De nombreux signaux sont envoyés plusieurs fois pour refléter divers événements liés à la souris, tels qu'un double clic. Pour faciliter la classification des clics de souris, l'objet MouseEvent possède une propriété accepted qui permet de désactiver la propagation de l'événement.

Pour en savoir plus sur le système d'événements de QML, veuillez lire le document sur les signaux et les gestionnaires, et sur le système d'événements.

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