pourrait traiter l'événement (c'est-à-dire exécuter l'instruction event.accepted =
true).
Dans la scène Qt Quick, l'événement continue de poursuivre son chemin :
la cible de saisie (marquée par focus: true) reçoit en priorité l'événement : si
elle l'accepte (event.accepted = true), l'événement est considéré comme
traité ;
sinon, l'événement est transmis à l'élément parent. À nouveau, ce dernier peut
l'accepter (event.accepted = true) ou non ;
l'élément continue son trajet jusqu'au composant racine, d'enfant en parent, s'il
n'est pas traité dans la hiérarchie. À ce niveau, l'événement est ignoré.
1.2. Gestion de la cible de saisie
En résumé, la ligne focus: true a simplement pour objectif de demander à récupérer
les événements du clavier. Elle permet de le faire dès le lancement de l'application.
Évidemment, un seul composant peut être la cible de saisie : si plusieurs composants
précisent la ligne focus: true, seul le dernier sera actif.
La partie intéressante concerne la gestion de cette cible de saisie : elle peut bien
évidemment changer au cours de l'application. Par exemple, quand l'utilisateur a
terminé de remplir un champ du formulaire, il aimerait passer au suivant, ce qui
implique un changement de la cible. Une manière très simple de la déplacer est de
changer la valeur de la propriété focus du composant qui doit la recevoir, comme dans
un gestionnaire de signal. L'exemple suivant montre une série de zones sensibles au clic
avec du texte (instanciées par un Repeater) : dès que l'une reçoit un clic, le composant
Text correspondant devient la cible de saisie et reçoit les événements du clavier, qu'il
transmet dans la console.
Repeater {
model: 3
Text {
text: modelData + " : " + (activeFocus ? "actif" : "inactif")
color: activeFocus ? "green" : "red"
font.pointSize: 20
Keys.onPressed: {
console.log("[" + modelData + "] Touche : " + event.key)
408
Précédent

- 409/494

Suivant