2. Exploitation des états pour un code plus
déclaratif
Cette première manière de faire demeure très impérative malgré l'utilisation d'états : le
code fait souvent appel au JavaScript. Il y aurait moyen d'exploiter davantage les états
en réécrivant l'application : un état par couleur de feu (les deux lampes rouges sont
coordonnées par l'une des deux), plus un global. Le principal intérêt d'utiliser autant
d'états est de découpler les actions : l'état principal sera de très haut niveau, il
coordonnera les deux couleurs ; ensuite, chaque couleur de lampe gérera ses allumages.
Un autre avantage est la simplicité pour ajouter des transitions sur ce nouveau code.
Note > Cet exemple est disponible dans le dossier feu-etats .
ApplicationWindow {
// …
Rectangle {
id: red1
// …
states: [
State {
name: "blinking"
PropertyChanges { target: red1; color: "red" }
PropertyChanges {
target: timer
interval: 500; running: true
onTriggered: red1.color =
Qt.colorEqual(red1.color, "red") ? "black" :
"red"
}
},
State {
name: "off"
PropertyChanges { target: red1; color: "black" }
}
]
}
Rectangle {
id: red2
color: (red1.state == "off") ? "black" :
Qt.colorEqual(red1.color, "red") ? "black" : "red"
// …
}
421
Précédent

- 422/494

Suivant