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 Discussion :

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


Sujet :

Qt

  1. #1
    Membre à l'essai
    Homme Profil pro
    Developpeur amateur
    Inscrit en
    Juillet 2023
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Developpeur amateur

    Informations forums :
    Inscription : Juillet 2023
    Messages : 26
    Points : 22
    Points
    22
    Par défaut Qt et 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 703
    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 703
    Points : 57 339
    Points
    57 339
    Billets dans le blog
    41
    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
    533
    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 : 533
    Points : 1 927
    Points
    1 927
    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...
    "Les cons, ça ose tout. C'est même à ça qu'on les reconnaît." Michel Audiard - Les tontons flingueurs
    Site Web : https://www.admin-libre.fr

  4. #4
    Membre à l'essai
    Homme Profil pro
    Developpeur amateur
    Inscrit en
    Juillet 2023
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Developpeur amateur

    Informations forums :
    Inscription : Juillet 2023
    Messages : 26
    Points : 22
    Points
    22
    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 : 15
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 ???

Discussions similaires

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

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