Qt State Machine Visión general

El framework State Machine proporciona clases para crear y ejecutar grafos de estados. Los conceptos y la notación se basan en los de Harel's Statecharts: Un formalismo visual para sistemas complejos de Harel, que es también la base de los diagramas de estado UML. La semántica de la ejecución de máquinas de estados se basa en State Chart XML (SCXML).

Los diagramas de estado proporcionan una forma gráfica de modelar cómo reacciona un sistema a los estímulos. Para ello, se definen los posibles estados en los que puede encontrarse el sistema y cómo puede pasar de un estado a otro(transiciones entre estados). Una característica clave de los sistemas basados en eventos (como las aplicaciones Qt) es que el comportamiento a menudo depende no sólo del último evento o evento actual, sino también de los eventos que lo precedieron. Con los diagramas de estados, esta información es fácil de expresar.

El framework State Machine proporciona una API y un modelo de ejecución que pueden utilizarse para integrar eficazmente los elementos y la semántica de los statecharts en las aplicaciones Qt. El framework se integra estrechamente con el sistema de meta-objetos de Qt; por ejemplo, las transiciones entre estados pueden ser activadas por señales, y los estados pueden ser configurados para establecer propiedades e invocar métodos en {QObject}s. El sistema de eventos de Qt se utiliza para controlar las máquinas de estados.

El gráfico de estados en el marco de la máquina de estados es jerárquico. Los estados pueden anidarse dentro de otros estados, y la configuración actual de la máquina de estados consiste en el conjunto de estados que están activos en ese momento. Todos los estados de una configuración válida de la máquina de estados tendrán un ancestro común.

Véase también Qt State Machine C++ Guide, Qt State Machine QML Guide y Qt SCXML Overview.

© 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.