propriété modifiers. Puisque plusieurs touches de modification peuvent être utilisées
simultanément, une comparaison simple comme pour event.key ne fonctionne pas : ce
champ est une composition de tous les modificateurs possibles. Les tests utilisent donc
des opérateurs logiques entre la valeur de event.modifiers et les codes des touches
à vérifier :
Item {
focus: true
Keys.onPressed: {
if ((event.key == Qt.Key_0)
&& (event.modifiers & Qt.AltModifier)
&& (event.modifiers & Qt.ControlModifier)) {
console.log("Alt Ctrl zéro")
event.accepted = true;
}
}
}
Note > Qt Quick émet aussi des signaux quand les touches sont lâchées, ils sont
accessibles par Keys.onReleased. Il n'existe aucun raccourci dans ce cas (par exemple,
aucun Keys.onRightReleased) : tous les cas doivent être gérés dans Keys.onReleased.
1.1. Vie d'un événement
Ces trois exemples ont tous la ligne focus: true. Son utilité est de gérer la cible de
saisie : elle indique que les événements en provenance du clavier pourraient être traités
par le composant concerné (ils seront dans tous les cas transmis au composant, qui
pourra décider de les traiter ou non). Le traitement de ces événements est quelque peu
complexe :
1. L'utilisateur appuie sur une touche du clavier, qu'il soit physique ou virtuel (par
exemple, sur un téléphone portable ou un périphérique embarqué : le clavier est
affiché sur un écran tactile). Le système d'exploitation transmet deux types
d'information à l'application : l'appui et le relâchement d'une touche.
2. L'application PyQt reçoit cet événement et le traite au sein de sa boucle
d'événements interne (dans QApplication) : le widget qui doit recevoir
l'événement (celui qui est actuellement actif) est identifié et l'information lui est
passée.
3. Pour une application Qt Quick, le gestionnaire de scène Qt Quick reçoit cet
événement et le propage dans la hiérarchie des composants, où l'un d'entre eux
407
simultanément, une comparaison simple comme pour event.key ne fonctionne pas : ce
champ est une composition de tous les modificateurs possibles. Les tests utilisent donc
des opérateurs logiques entre la valeur de event.modifiers et les codes des touches
à vérifier :
Item {
focus: true
Keys.onPressed: {
if ((event.key == Qt.Key_0)
&& (event.modifiers & Qt.AltModifier)
&& (event.modifiers & Qt.ControlModifier)) {
console.log("Alt Ctrl zéro")
event.accepted = true;
}
}
}
Note > Qt Quick émet aussi des signaux quand les touches sont lâchées, ils sont
accessibles par Keys.onReleased. Il n'existe aucun raccourci dans ce cas (par exemple,
aucun Keys.onRightReleased) : tous les cas doivent être gérés dans Keys.onReleased.
1.1. Vie d'un événement
Ces trois exemples ont tous la ligne focus: true. Son utilité est de gérer la cible de
saisie : elle indique que les événements en provenance du clavier pourraient être traités
par le composant concerné (ils seront dans tous les cas transmis au composant, qui
pourra décider de les traiter ou non). Le traitement de ces événements est quelque peu
complexe :
1. L'utilisateur appuie sur une touche du clavier, qu'il soit physique ou virtuel (par
exemple, sur un téléphone portable ou un périphérique embarqué : le clavier est
affiché sur un écran tactile). Le système d'exploitation transmet deux types
d'information à l'application : l'appui et le relâchement d'une touche.
2. L'application PyQt reçoit cet événement et le traite au sein de sa boucle
d'événements interne (dans QApplication) : le widget qui doit recevoir
l'événement (celui qui est actuellement actif) est identifié et l'information lui est
passée.
3. Pour une application Qt Quick, le gestionnaire de scène Qt Quick reçoit cet
événement et le propage dans la hiérarchie des composants, où l'un d'entre eux
407
