Qt SCXML Vue d'ensemble
Le module Qt SCXML fournit des classes pour intégrer des machines à états créées à partir de fichiers State Chart XML (SCXML) dans des applications Qt. Les fichiers SCXML peuvent être créés à l'aide de n'importe quel outil approprié, tel qu'un éditeur de texte ou un simulateur, tant qu'ils sont conformes à la spécification SCXML, avec les restrictions et les extensions décrites dans Conformité SCXML.
Certaines parties de la logique de l'application peuvent être remplacées par un fichier SCXML encapsulé. Cela permet de créer une division claire entre la logique d'application et la mise en œuvre de l'interface utilisateur en utilisant Qt Quick ou Qt Widgets.
Le module Qt SCXML diffère du cadre de machine d'État du module Qt State Machine en ce sens que Qt SCXML fournit un processeur conforme qui peut analyser et traiter des documents SCXML conformes. Dans Qt SCXML, les machines à états sont lues à partir de fichiers Qt SCXML séparés 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 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 des machines à états, état, transition et événement, sont basés sur ceux de la spécification SCXML. Les diagrammes d'état fournissent un moyen graphique de modéliser la façon dont un système réagit à des stimuli. Pour ce faire, ils définissent les états possibles du système et la manière dont le système peut passer d'un état à l'autre (transitions entre les états). Une caractéristique clé des systèmes pilotés par les événements (tels que les applications Qt) est que le comportement dépend souvent non seulement du dernier événement ou de l'événement actuel, mais aussi des événements qui l'ont précédé. Avec les diagrammes d'état, ces informations sont faciles à exprimer.
Qt SCXML s'intègre étroitement au système de méta-objets de Qt ; par exemple, les transitions entre les é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 de Qt SCXML est hiérarchique. Les états peuvent être imbriqués dans d'autres états, 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, et le modèle de données ECMAScript. En outre, Qt SCXML fournit son propre modèle de données C++ qui est mis en œuvre 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 est soutenue par une sous-classe de QScxmlCppDataModel, pour laquelle le compilateur Qt SCXML génère les méthodes de distribution.
Qt SCXML Compilateur
Le compilateur Qt SCXML, qscxmlc, lit un fichier .scxml et produit des fichiers source et d'en-tête C++ contenant une classe qui met en œuvre une machine à états telle que définie dans SCXML. Pour plus d'informations sur l'utilisation du compilateur, voir Utilisation du compilateur Qt SCXML (qscxmlc).
Les machines à états créées dynamiquement et compilées se comportent de la même manière, ont les mêmes propriétés, les mêmes états, le même modèle de données, etc. Elles ne diffèrent que par la manière dont elles sont instanciées. Pour plus d'informations, voir Instanciation des machines à états et Qt SCXML Exemples.
Catégories de journalisation
Le module Qt SCXML exporte les catégories de journalisation suivantes :
| Catégorie de journalisation | Description de la catégorie de journalisation |
|---|---|
| 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.