IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Premiers pas avec QScxmlStateMachine : génération et utilisation de machine d'états avec Qt Creator et son outil State Chart
Un tutoriel de sylvain1984

Le , par sylvain1984

10PARTAGES

7  0 
Bonjour,

Qt Creator offre un outil visuel (State Charts) de conception de machines d'états. Il repose sur l'utilisation de la classe "QScxmlStateMachine".

M'étant longuement cassé les dents sur l'emploi de State Charts et de la classe, et l'utilisant maintenant avec un bonheur, j'ai commis un tuto afin de synthétiser ce que j'ai compris.

Grand merci à @dourouc05 de m'avoir aidé dans la démarche et pour la validation technique. Grand merci également à @f-leb pour ses corrections textuelles impitoyables !

Voici le lien vers le tuto :
QScxmlStateMachine, premiers pas : génération et utilisation de machine d’états avec Qt Creator et son outil State Chart

Comme précisé dans son introduction, ce tuto ne traite pas de la classe "QStateMachine", qui fait l'objet des cours de Daniel Géron (https://qt.developpez.com/tutoriels/...qstatemachine/, https://qt.developpez.com/tutoriels/...stateparallel/, https://qt.developpez.com/tutoriels/...qhistorystate/).

Bonne lecture !
Sylvain
Vous avez lu gratuitement 1 550 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de sylvain1984
Nouveau membre du Club https://www.developpez.com
Le 03/07/2025 à 12:34
Bonjour boboss123,

Merci pour ta remarque.

La raison est que le soft peut être dans deux états : "entretien de la base" ou "accueil public".

Dans le second cas, je n'autorise le chargement d'une base qu'une seule fois, si elle n'est pas déjà chargée, et j'interdis le vidage de la base. Il faut donc introduire une petite subtilité.

Depuis j'ai complété la machine d'états en introduisant un état "Init_base" (cf. ci-dessous). À l'entré dans cet état le soft lance une méthode chargée de lire une base si l'utilisateur a choisi de le faire au lancement du soft.



Maintenant je ne suis pas un expert et je n'ai trouvé que cette solution pour le moment.

Je vais creuser dans quelque temps l'aspect "machines parallèles". Sans doute cela va simplifier les choses car je fais actuellement tourner 4 machines différentes...
Aussi j'envisage un complément au tuto avec un ajout concernant les <log>.

Bien à toi,
Sylvain
2  0 
Avatar de boboss123
Membre éprouvé https://www.developpez.com
Le 03/07/2025 à 9:14
Bonjour,

J'ai lu rapidement ton article et la question que je me pose c'est pourquoi ne pas avoir simplement créé deux états ("Base_Modifiee" et "Base_sauvee" ?
... que la base soit vide ou non, ça ne change pas grand chose au final, ce qui compte c'est de savoir si l'état actuel de la base a été enregistrée.

A la limite on pourrait rajouter deux états supplémentaire pour gérer l'initialisation de la base : "Base_inexistante" et "Base_cree" avec "Base_Modifiee" et "Base_sauvee" étant des sous états de "Base_cree".
0  0