En esta página

Qt SCXML Visión general

El módulo Qt SCXML proporciona clases para incrustar máquinas de estado creadas a partir de archivos State Chart XML (SCXML) en aplicaciones Qt. Los archivos SCXML pueden crearse utilizando cualquier herramienta adecuada, como un editor de texto o un simulador, siempre que cumplan la Especificación SCXML, con las restricciones y extensiones descritas en Cumplimiento SCXML.

Algunas partes de la lógica de la aplicación pueden sustituirse por un archivo SCXML encapsulado. Esto permite crear una división clara entre la lógica de la aplicación y la implementación de la interfaz de usuario utilizando Qt Quick o Qt Widgets.

El módulo Qt SCXML difiere del marco de trabajo de la máquina de estados en el Qt State Machine en que Qt SCXML proporciona un procesador conforme que puede analizar y procesar documentos SCXML conformes. En Qt SCXML, las máquinas de estado se leen desde archivos SCXML independientes y se integran en las aplicaciones Qt instanciando la clase QScxmlStateMachine y cargando un archivo SCXML dinámicamente o utilizando el compilador Qt SCXML para generar una subclase de QScxmlStateMachine que se instancie. La comunicación con el documento SCXML la proporcionan las señales y métodos de la clase QScxmlStateMachine.

Los conceptos básicos de máquina de estados, estado, transición y evento se basan en los de la especificación 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 del evento actual, sino también de los eventos que lo precedieron. Con los gráficos de estados, esta información es fácil de expresar.

Qt SCXML 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 QObjects. El sistema de eventos de Qt se utiliza para controlar las máquinas de estados.

El gráfico de estados de Qt SCXML 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.

Modelos de datos

Qt SCXML admite el modelo de datos null, que deben admitir los procesadores SCXML conformes, y el modelo de datos ECMAScript. Además, Qt SCXML proporciona su propio modelo de datos C++, implementado por la clase QScxmlCppDataModel. La clase permite escribir código C++ para atributos expr y elementos <script>. La parte de datos del modelo de datos está respaldada por una subclase de QScxmlCppDataModel, para la que el compilador Qt SCXML generará los métodos de envío.

Qt SCXML Compilador

El compilador de Qt SCXML, qscxmlc, lee un archivo .scxml y produce archivos fuente y de cabecera en C++ que contienen una clase que implementa una máquina de estados tal y como se define en SCXML. Para obtener más información sobre el uso del compilador, consulte Uso del compilador Qt SCXML (qscxmlc).

Tanto las máquinas de estado creadas dinámicamente como las compiladas se comportan de la misma manera, tienen las mismas propiedades, estados, modelo de datos, etcétera. Sólo se diferencian en la forma de instanciarlas. Para obtener más información, consulte Instanciación de máquinas de estado y Qt SCXML Ejemplos.

Categorías de registro

El módulo Qt SCXML exporta las siguientes categorías de registro:

Categoría de registroDescripción
qscxmlLogActiva el registro del módulo Qt SCXML
scxmlLogActiva el registro de documentos 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.