d'évaluer du code à intervalle régulier. La propriété running indique si le minuteur est
démarré, repeat s'il se réenclenche à chaque fin d'intervalle. interval donne, en
millisecondes, le délai imparti entre la définition de running à true et l'exécution du
gestionnaire de signal onTriggered.
ApplicationWindow {
Rectangle { … }
// …
Timer {
id: timer running: false repeat: true } MouseArea { id: click anchors.fill: parent
onClicked: { switch (state) { case "allowed": state = "disallowed"; break case
"disallowed": state = "allowed"; break } } states: [ State { name: "allowed"
PropertyChanges { target: red1; color: "black" } PropertyChanges { target: red2; color:
"black" } PropertyChanges { target: white; color: "white" } PropertyChanges { target:
timer interval: 800 running: true onTriggered: { white.color =
Qt.colorEqual(white.color, "white") ? "black" : "white" } } }, State { name:
"disallowed" PropertyChanges { target: red1; color: "red" } PropertyChanges { target:
red2; color: "black" } PropertyChanges { target: white; color: "black" }
PropertyChanges { target: timer interval: 500 running: true onTriggered: { red2.color
= Qt.colorEqual(red1.color, "red") ? "red" : "black" red1.color =
Qt.colorEqual(red1.color, "red") ? "black" : "red" } } } ] state: "allowed" } }
Les différents états sont mis en place et gérés au sein d'un composant MouseArea,
qui délimitera la zone où l'utilisateur pourra cliquer pour changer d'état. Tous les
états y sont définis.
Le premier état défini correspond à celui où les voitures peuvent passer : la lampe
blanche clignote. Lors du passage à cet état, il faut donc éteindre les deux lampes
rouges (définir leur couleur à "black") et allumer la blanche (définir sa couleur à
"white"). Chaque changement demandé par un PropertyChanges ne s'applique qu'à
un seul élément Qt Quick : sa cible target ; toutes les autres propriétés indiquent
des modifications à opérer.
Un minuteur est requis pour le clignotement.
Les différents états sont stockés dans un tableau au niveau de la propriété states.
419
Précédent

- 420/494

Suivant