Qt SCXML Présentation
Le module Qt SCXML fournit des classes permettant d’intégrer des machines à états créées à partir de fichiers XML de diagrammes d’états (SCXML) dans des applications Qt. Les fichiers SCXML peuvent être créés à l’aide de n’importe quel outil adapté, tel qu’un éditeur de texte ou un simulateur, à condition qu’ils soient conformes à la spécification SCXML, avec les restrictions et extensions décrites dans la section Conformité SCXML.
Certaines parties de la logique d'application peuvent être remplacées par un fichier SCXML encapsulé. Cela permet d'établir une séparation claire entre la logique d'application et l'implémentation de l'interface utilisateur en utilisant ` Qt Quick ` ou ` Qt Widgets`.
Le module Qt SCXML se distingue du framework State Machine en ce que Qt State Machine module en ce sens qu’ Qt SCXML fournit un processeur conforme capable d’analyser et de traiter des documents SCXML conformes. Dans Qt SCXML, les machines à états sont lues à partir de fichiers SCXML distincts et intégrées aux applications Qt en instanciant la classe QScxmlStateMachine et en chargeant un fichier SCXML de manière dynamique, ou en utilisant le compilateur Qt SCXML pour générer une sous-classe de QScxmlStateMachine qui est ensuite instanciée. La communication avec le document SCXML est assurée par les signaux et les méthodes de la classe QScxmlStateMachine.
Les concepts de base de la machine à états ( état, transition et événement ) s’appuient sur ceux de la spécification SCXML. Les diagrammes d’états offrent un moyen graphique de modéliser la manière dont un système réagit à des stimuli. Pour ce faire, on définit les états possibles dans lesquels le système peut se trouver, ainsi que la manière dont il peut passer d’un état à un autre (transitions entre les états). Une caractéristique essentielle des systèmes pilotés par les événements (tels que les applications Qt) est que le comportement dépend souvent non seulement de l’événement le plus récent ou actuel, mais aussi des événements qui l’ont précédé. Les diagrammes d’états permettent d’exprimer facilement ces informations.
Qt SCXML Le système s'intègre étroitement au système de méta-objets de Qt ; par exemple, les transitions entre états peuvent être déclenchées par des signaux, et les états peuvent être configurés pour définir des propriétés et invoquer des méthodes sur QObjects. Le système d’événements de Qt est utilisé pour piloter les machines à états.
Le graphe d’états dans Qt SCXML est hiérarchique. Les états peuvent être imbriqués les uns dans les autres, et la configuration actuelle de la machine à états est constituée de l’ensemble des états actuellement actifs.
Modèles de données
Qt SCXML prend en charge le modèle de données « null », qui doit être pris en charge par les processeurs SCXML conformes, ainsi que le modèle de données ECMAScript. De plus, Qt SCXML fournit son propre modèle de données C++, implémenté par la classe QScxmlCppDataModel. Cette classe permet d’écrire du code C++ pour les attributs `expr` et les éléments ` <script> `. La partie « données » du modèle de données s’appuie sur une sous-classe de ` QScxmlCppDataModel`, pour laquelle le compilateur Qt SCXML générera les méthodes de répartition.
Qt SCXML Compilateur
Le compilateur Qt SCXML, qscxmlc, lit un fichier .scxml et génère des fichiers source et d'en-tête C++ contenant une classe qui implémente une machine à états telle que définie dans SCXML. Pour plus d’informations sur l’utilisation du compilateur, consultez la section Utilisation du compilateur Qt SCXML (qscxmlc).
Les machines à états créées dynamiquement et celles compilées se comportent de la même manière ; elles possèdent les mêmes propriétés, états, modèle de données, etc. Elles ne diffèrent que par leur mode d’instanciation. Pour plus d’informations, consultez les sections « Instanciation des machines à états » et « Exemples d’Qt SCXML ».
Catégories de journalisation
Le module Qt SCXML exporte les catégories de journalisation suivantes :
| Catégorie de journalisation | Description |
|---|---|
| qscxmlLog | Active la journalisation du module « Qt SCXML » |
| scxmlLog | Active la journalisation des documents SCXML |
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.