Événements de souris
Les gestionnaires d’entrée constituent une méthode plus moderne de gestion des événements provenant de tous les périphériques de pointage, y compris la souris et l’écran tactile. Cette page décrit le type d’ Qt Quick e original MouseArea, initialement conçu pour gérer les entrées de la souris, puis étendu à la gestion des événements tactiles simples (sous la forme d’événements de souris synthétiques) dans des interfaces utilisateur orientées tactile.
Types de souris
- MouseArea type
- MouseEvent objet
Gestion des événements de souris
QML utilise des signaux et des gestionnaires pour gérer les interactions de la souris. Plus précisément, Qt Quick fournit les types MouseArea et MouseEvent qui permettent aux développeurs de définir des callbacks JavaScript (également appelés gestionnaires de signaux), lesquels acceptent les événements de souris dans une zone définie.
Définition d’une zone de souris
Le type ` MouseArea ` reçoit les événements au sein d’une zone définie. Un moyen rapide de définir cette zone consiste à ancrer la ` 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 `), alors la ` MouseArea ` occupera la zone définie par les dimensions du parent. Il est également possible de définir une zone plus petite ou plus grande que celle du 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 de souris. La documentation relative au type « MouseArea » décrit ces gestes plus en détail :
- annulé
- clicked
- doubleClicked
- entered
- exited
- position modifiée
- appuyé et maintenu
- enfoncé
- relâché
Ces signaux peuvent être associés à des callbacks qui sont appelé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 souris et clics de boutons doivent être activés avant de pouvoir envoyer ou recevoir des événements. Certaines propriétés MouseArea et MouseEvent permettent d’activer ces gestes.
Pour écouter (ou ignorer explicitement) un bouton de souris donné, attribuez le bouton de souris approprié à la propriété acceptedButtons.
Naturellement, les événements de souris, tels que les pressions de bouton et les positions de la souris, sont envoyés lors d'un clic de souris. Par exemple, la propriété containsMouse ne renverra sa valeur correcte que lors d'une pression sur le bouton de la souris. La propriété hoverEnabled activera les événements et le positionnement de la souris même en l'absence de pression sur un bouton. Définir la propriété hoverEnabled sur true activera à son tour les signaux entered, exited et positionChanged ainsi que 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")
}De plus, pour désactiver l’ensemble de la zone de la souris, définissez la propriété « MouseArea » ( enabled ) sur « false ».
Objet MouseEvent
Les signaux et leurs fonctions de rappel reçoivent un objet ` MouseEvent ` en paramètre. L'objet ` mouse ` contient des informations sur l'événement de souris. Par exemple, le bouton de souris à l'origine de l'événement est interrogé via la propriété ` mouse.button `.
L'objet ` MouseEvent ` peut également ignorer un événement de souris à l'aide de sa propriété ` accepted `.
Acceptation d’autres signaux
De nombreux signaux sont envoyés plusieurs fois pour refléter divers événements de souris, tels que le double-clic. Afin de faciliter la classification des clics de souris, l’objet ` MouseEvent ` dispose d’une propriété ` accepted ` permettant de désactiver la propagation de l’événement.
Pour en savoir plus sur le système d’événements de QML, veuillez consulter le document consacré aux signaux et gestionnaires, ainsi qu’au 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.