1 pièce(s) jointe(s)
Actions avec QStateMachine
Bonjour,
Je cherche à utiliser correctement les outils de QStateMachine pour gérer ma machine à état. Ci-joint un exemple de machine simple, où
- E1, E2, E3 sont les 3 états
- C1... C6 sont les conditions pour déclencher les transitions
- A1... A6 sont les actions à réaliser sur ces transitions
Mon problème est le suivant : comment réaliser des actions complexes sur les transitions ?
Je cherche par exemple à dessiner quelque chose, déplacer un objet à l'écran, envoyer quelque chose par le réseau...
Dans l'exemple de la documentation Qt, dans la partie "Doing Useful Work", il y a deux propositions :
- utiliser "assignProperty" : possible seulement pour les actions faciles comme dans leur exemple changer le texte d'un bouton, mais il n'y a pas de propriété pour toute action
- utiliser les signaux "entered() et exited()" et les connecter à une fonction qui fait l'action désirée : sympa mais c'est lié à l'état seulement et pas à la transition. Dans mon exemple, je ne fais pas la même chose si je quitte E1 pour aller vers E2 ou E3, de même que je ne fais pas la même chose si j'arrive dans E2 en provenance de E1 ou E3.
J'ai trouvé sur internet des propositions de sous-classer les objets transition (QSignalTransition), et de faire l'action dans sa méthode "onTransition()" mais ça me semble bien lourd pour quelque chose d'aussi simple...
Merci d'avance !