Qt State Machine Vue d'ensemble
Le framework State Machine fournit des classes pour la création et l'exécution de graphes d'états. Les concepts et la notation sont basés sur ceux des Statecharts de Harel : A visual formalism for complex systems de Harel, qui est également à la base des diagrammes d'états UML. La sémantique de l'exécution des machines à états est basée sur State Chart XML (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.
Le cadre de travail State Machine fournit une API et un modèle d'exécution qui peuvent être utilisés pour intégrer efficacement les éléments et la sémantique des diagrammes d'état dans les applications Qt. Le cadre 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 {QObject}s. Le système d'événements de Qt est utilisé pour piloter les machines à états.
Le graphe d'états dans le cadre des machines à états 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. Tous les états d'une configuration valide de la machine à états auront un ancêtre commun.
Voir également Qt State Machine Guide C++, Qt State Machine Guide QML et Qt SCXML Vue d'ensemble.
© 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.