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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Creator Discussion :

Machine à états : comment utiliser State Chart de Qt Creator ?


Sujet :

Qt Creator

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Developpeur amateur
    Inscrit en
    Juillet 2023
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Developpeur amateur

    Informations forums :
    Inscription : Juillet 2023
    Messages : 36
    Points : 30
    Points
    30
    Par défaut Machine à états : comment utiliser State Chart de Qt Creator ?
    Bonjour,

    Je viens à nouveau m'échouer sur ce forum faute d'avoir trouvé une réponse.

    Je m'intéresse à la possibilité de définir des machines à états avec Qt Creator.

    J'ai donc ajouté un fichier scxml à mon projet et j'ai tenté d'en faire quelque chose en partant d'un cas simple.

    Première surprise : il faut compléter l'installation de Qt avec le paquet qt6-scxml-dev. Sinon la classe QStateMachine est inconnue.
    Seconde surprise : il n'y a vraiment pas grand chose dans la doc à propos du module Qt Creator State Char. En particulier la doc ne dit rien sur la suite à donner à la définition d'une machine à états. Quant à la doc de QStateMachine, je ne l'ai pas trouvé.
    Troisième surprise : il semble que pas grand monde l'utilise, ou alors c'est si simple que cela ne mérite pas qu'on en parle. Auquel cas, je m'avoue gros boulet de service et je demande de l'aide...

    J'ai lu que la classe QStateMachine a été récemment retirée de Qt Core. Est-ce une volonté de l'éditeur de retirer cette fonction de Qt ? Il existerait mieux ?

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 863
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 863
    Points : 58 438
    Points
    58 438
    Billets dans le blog
    44
    Par défaut
    Bonjour,

    Concernant QStateMachine Cours sur le framework QStateMachine

  3. #3
    Membre chevronné Avatar de gabriel21
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2007
    Messages : 548
    Points : 1 989
    Points
    1 989
    Par défaut
    Doc du module Qt state Machine : https://doc.qt.io/qt-6/qtstatemachine-index.html
    Doc du module QT SCXML : https://doc.qt.io/qt-6/qtscxml-index.html
    Dans ces deux pages, il y a des liens vers des exemples d'ulisations

    Aujourd'hui, ce sont des modules optionnels et ils ne font plus partit de QtCore. Cela veut juste dire que l'équipe de développement estiment que les fonctionnalités ne sont pas indispensable ou qu'elles sont devenues trop nombreuses ou lourdes. Je sais qu'il cherchent à garder le QtCore le plus léger possible. Cela n'implique en rien une possible obsolescence des modules. A chaque changement de version, il y a ce type de redécoupage : fusion de modules, création de modules, suppression de module, refonte de module...

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Developpeur amateur
    Inscrit en
    Juillet 2023
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Developpeur amateur

    Informations forums :
    Inscription : Juillet 2023
    Messages : 36
    Points : 30
    Points
    30
    Par défaut
    Merci pour vos réponses rapides !

    Bien vu le tuto sur QStateMachine. Toutefois je souhaite partir de la définition graphique de la machine à état (faite avec le State Chart de Qt Creator).

    Voici par exemple ce qui serait une machine à états de mon projet, réalisé avec le State Chart (je suis preneur de toutes critiques...) :
    Nom : scxml_screenshot.png
Affichages : 137
Taille : 29,2 Ko

    J'ai fini par trouver comment générer le code C++ à partir du fichier .csxml généré par le State Chart. Dans QtCreator il faut ajouter et configurer un outil externe (QtCreator/Outils/Externes/Configure...). Cet outil se trouve chez moi dans /usr/lib/qt6/libexec/qscxmlc. Lorsque la machine à états est affichée dans le State Chart, il faut lancer ce nouvel outil pour générer le .cpp et le .h dans le même répertoire. En ouvrant le .h on peut voir qu'un nouvel objet est créé, dérivé de la classe QScxmlStateMachine.

    Maintenant j'ai un autre gros soucis : 35 erreurs à l'édition de liens concernant des définitions multiples. La doc m'en dira peut-être plus demain...
    [EDIT 21/07/24] Je n'ai plus d'erreurs de définitions multiples. Les fichiers sources générés par qscxmlc ne doivent pas être ajoutées manuellement à l'arborescence du projet sous Qt Creator. Ils ne sont pas destinés à être modifiés.[/]

    Excellente soirée !
    Sylvain

    P.S. : pour Gabriel.
    J'ai toujours un doute quand je lis ta citation des Tontons Flingueurs : est-ce que j'ai tout osé en posant ma question ???

  5. #5
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 477
    Points : 4 676
    Points
    4 676
    Par défaut
    Bonjour Sylvain,

    Citation Envoyé par sylvain1984 Voir le message
    ...P.S. : pour Gabriel. J'ai toujours un doute quand je lis ta citation des Tontons Flingueurs : est-ce que j'ai tout osé en posant ma question ???
    Ils osent tout car il n'ont jamais de doute. Tu es donc sauf

    Mais Audiard disait aussi : "Deux cons qui marchent iront toujours plus loin qu'un intellectuel assis". A méditer derrière son écran ?

    Salut

  6. #6
    Membre chevronné Avatar de gabriel21
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2007
    Messages : 548
    Points : 1 989
    Points
    1 989
    Par défaut
    Citation Envoyé par Guesset Voir le message
    Bonjour Sylvain,



    Ils osent tout car il n'ont jamais de doute. Tu es donc sauf

    Mais Audiard disait aussi : "Deux cons qui marchent iront toujours plus loin qu'un intellectuel assis". A méditer derrière son écran ?

    Salut
    +2

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Developpeur amateur
    Inscrit en
    Juillet 2023
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Developpeur amateur

    Informations forums :
    Inscription : Juillet 2023
    Messages : 36
    Points : 30
    Points
    30
    Par défaut
    Me voila rassuré

    Je vais encore oser un peu, j'aime le risque...

    Comme il y a eu des évolutions dans Qt par rapport aux tutos disponibles sur ce site, j'ai commis un petit document pour me rappeler la vie concernant QScxmlStateMachine quand j'en aurai besoin plus tard (... lorsque que probablement Qt aura encore évolué...).

    Je ne prétends pas en faire un tuto, je ne suis pas assez pédago pour ça et je suis bien loin de couvrir tout le sujet.

    Toutefois je me dis que ça peut faire gagner du temps si on ne connais pas le sujet.

    Quel serait la place de ce document sur ce site ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 13h06
  2. Comment utiliser un cache ?
    Par TOM-Z dans le forum XMLRAD
    Réponses: 4
    Dernier message: 14/03/2003, 10h55
  3. comment utiliser actionscript ?
    Par webs dans le forum Flash
    Réponses: 3
    Dernier message: 10/02/2003, 00h11
  4. Comment utiliser OUT ?
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 20/07/2002, 10h35
  5. Réponses: 5
    Dernier message: 11/06/2002, 16h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo