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 !

Utiliser le framework QStateMachine de Qt pour faciliter la maintenance de ses applications
Un tutoriel de Daniel Génon

Le , par ardoisebleue

4PARTAGES

7  0 
Chers membres du Club,

Je vous propose un tutoriel pour comprendre et utiliser la bibliothèque QStateMachine.

Il est composé d'un cours en dix étapes et d'un ensemble de dix projets à télécharger depuis un dépôt.

À la fin de ces cours vous aurez acquis les bases indispensables pour manier efficacement cette bibliothèque.

Rendez-vous à cette page : Apprendre les bases de la programmation de la bibliothèque QStateMachine

Servez-vous de cette discussion pour me faire part de vos remarques, commentaires ou d'éventuelles informations.

Je vous souhaite une bonne lecture, de profitables séances de tests et armez-vous de courage !

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

Avatar de ardoisebleue
Membre confirmé https://www.developpez.com
Le 22/07/2021 à 11:07
Pour parfaire votre apprentissage, vous pouvez suivre le cours sur la mise en œuvre des états parallèles à cette page :
les états parallèles avec le framework QStateMachine
1  0 
Avatar de ardoisebleue
Membre confirmé https://www.developpez.com
Le 27/03/2021 à 10:03
Un peu de récréation :
Ce qui suit n'a rien à voir avec QStateMachine, mais il permet d'utiliser la méthode ensureVisible de la classe QGraphicsView qui permet un effet visuel dans le déplacement du joueur, et s'intègre facilement dans la structure du programme déjà réalisé.
Pour réaliser cela, j'ai ajouté l'étape 11 au git QStateMachine, téléchargeable dans le document cité plus haut.
Actuellement, dans une scène de dimensions plus importantes que la zone graphique, le joueur disparaîtrait dès qu'il aurait atteint la limite de la zone, puisque les frontières de son déplacement sont définies par la dimension de la scène, donc de l'image.
L'effet assumé par ensureVisible est que la scène reste immobile, tant que le joueur se déplace dans un espace rectangulaire paramétré à l'intérieur de la zone graphique. Dès que ce joueur atteint une des limites de cet espace, il semble se fixer et déclenche le défilement de la scène, jusqu'à ce que un bord de cette scène arrive à la limite de la zone graphique et, alors, le joueur reprend son déplacement jusque la fin de la zone, où il se fixe.
Comme vous pourrez le constater dans le git téléchargé, j'ai ajouté une image plus grande : motif/fond2.png et modifié quelques fichiers. Ces modifications sont commentées dans les fichiers
Le plus stupéfiant c'est le peu de modifications nécessaires pour obtenir cet effet :
Dans la classe Joueur :
Code : Sélectionner tout
connect(animationdelobjet,SIGNAL(valueChanged(QVariant)), this, SLOT(LeJoueurBouge(QVariant)));
et la fonction :
Code : Sélectionner tout
void Joueur::LeJoueurBouge(const QVariant &){    pvue->ensureVisible(this,200,200);}
Bonne détente
Daniel Génon
0  0 
Avatar de ardoisebleue
Membre confirmé https://www.developpez.com
Le 21/11/2021 à 18:21
Pour utiliser les projets TP des cours pour la version Qt 6.2, quelques petites modifications suffisent :

- dans les fichiers ".pro" ajouter la ligne : QT += statemachine.

- dans les fichiers .h et .cpp où figure la ligne : #include <QtCore/QStateMachine>,
La modifier en supprimant "QtCore" :
Code : Sélectionner tout
#include <QStateMachine>
- dans les fichiers .h où figure la ligne : #include <QtWidgets/QKeyEventTransition>,
La modifier en supprimant "QtWidgets" :
Code : Sélectionner tout
#include <QKeyEventTransition>
- dans les fichiers .cpp où figure la ligne : #include <QtCore/QSignalTransition>,
La modifier en supprimant "QtCore" :
Code : Sélectionner tout
#include <QSignalTransition>
Et la compilation devrait se réaliser sans souci.

Il se peut que dans l'installation de la version Qt 6.2, la bibliothèque StateMachine ne soit pas attachée, utilisez le logiciel "MaintenanceTool" de Qt pour la télécharger.
0  0 
Avatar de ardoisebleue
Membre confirmé https://www.developpez.com
Le 03/12/2021 à 18:27
Pour télécharger les projets exemples de la version QT 6.2.1 le dépôt Github est :
https://github.com/daniel-genon/TPqstatemachineQT6.2
0  0 
Avatar de ardoisebleue
Membre confirmé https://www.developpez.com
Le 06/07/2022 à 8:47
Lorsque vous aurez fini ce cours, vous trouverez dans la troisième partie, traitant de l'utilisation de la classe QHistoryState, comment interrompre temporairement l'activité d'une "machine".
Vous y apprendrez aussi la procédure pour insérer dans la boucle de la machine votre propre événement pour activer une transition.
Et, dans la foulée, vous découvrirez quelques astuces pour déclencher des transitions par l'intermédiaire de la souris.

Pour assimiler la fin cette dernière partie, je recommande une expérience élémentaire sur les états parallèles dispensée dans cette deuxième partie du cours sur le framework QStateMachine.

Bon courage et bonne lecture
0  0