1. Interactions par le clavier
Le type attaché Keys permet de réagir aux événements du clavier. Il définit toute une
série de gestionnaires de signal selon la touche appuyée. Par exemple,
Keys.onDigit0Pressed détecte si l'utilisateur appuie sur la touche 0,
Keys.onEnterPressed si c'est un retour à la ligne, Keys.onRightPressed si c'est la
flèche directionnelle vers la droite, etc.
Item {
focus: true
Keys.onDigit0Pressed: console.log("zéro")
Keys.onRightPressed: console.log("droite")
}
Toutes les touches ne sont pas accessibles par ce mécanisme (la liste est donnée dans
la documentation). Pour celles qui ne le sont pas, le gestionnaire de signal à utiliser est
Keys.onPressed : de manière très générique, il est appelé dès que l'utilisateur appuie
sur une touche. La variable event contient une instance de KeyEvent, qui donne
notamment la touche appuyée par event.key. La liste des codes disponibles est décrite
dans la documentation.
Item {
focus: true
Keys.onPressed: {
if (event.key == Qt.Key_0) {
console.log("zéro")
event.accepted = true
} else if (event.key == Qt.Key_Left) {
console.log("droite")
event.accepted = true
}
}
}
Note > Le champ event.accepted indique que l'événement correspondant est traité et ne
doit pas être transmis au reste de l'application. Si cette ligne est omise, l'événement
continue d'être traité par tous les éléments et gestionnaires d'événements
concernés : par exemple, si un composant utilise le gestionnaire de signal générique
Keys.onPressed ainsi qu'une version spécifique (comme Keys.onEnterPressed) pour un même
événement du clavier, les deux seront exécutés (dans un ordre a priori non défini).
Les modificateurs utilisés (Ctrl, Alt, Maj) sont aussi fournis à travers event dans la
406
Le type attaché Keys permet de réagir aux événements du clavier. Il définit toute une
série de gestionnaires de signal selon la touche appuyée. Par exemple,
Keys.onDigit0Pressed détecte si l'utilisateur appuie sur la touche 0,
Keys.onEnterPressed si c'est un retour à la ligne, Keys.onRightPressed si c'est la
flèche directionnelle vers la droite, etc.
Item {
focus: true
Keys.onDigit0Pressed: console.log("zéro")
Keys.onRightPressed: console.log("droite")
}
Toutes les touches ne sont pas accessibles par ce mécanisme (la liste est donnée dans
la documentation). Pour celles qui ne le sont pas, le gestionnaire de signal à utiliser est
Keys.onPressed : de manière très générique, il est appelé dès que l'utilisateur appuie
sur une touche. La variable event contient une instance de KeyEvent, qui donne
notamment la touche appuyée par event.key. La liste des codes disponibles est décrite
dans la documentation.
Item {
focus: true
Keys.onPressed: {
if (event.key == Qt.Key_0) {
console.log("zéro")
event.accepted = true
} else if (event.key == Qt.Key_Left) {
console.log("droite")
event.accepted = true
}
}
}
Note > Le champ event.accepted indique que l'événement correspondant est traité et ne
doit pas être transmis au reste de l'application. Si cette ligne est omise, l'événement
continue d'être traité par tous les éléments et gestionnaires d'événements
concernés : par exemple, si un composant utilise le gestionnaire de signal générique
Keys.onPressed ainsi qu'une version spécifique (comme Keys.onEnterPressed) pour un même
événement du clavier, les deux seront exécutés (dans un ordre a priori non défini).
Les modificateurs utilisés (Ctrl, Alt, Maj) sont aussi fournis à travers event dans la
406
