StateMachine QML Type
Proporciona una máquina de estados finitos jerárquica. Más...
| Import Statement: | import QtQml.StateMachine 6.11 |
| Inherits: |
Propiedades
- errorString : string
- globalRestorePolicy : enumeration
- running : bool
Señales
Métodos
Descripción detallada
StateMachine se basa en los conceptos y la notación de Statecharts. StateMachine forma parte de Qt State Machine QML API
Una máquina de estados gestiona un conjunto de estados y transiciones entre esos estados; estos estados y transiciones definen un grafo de estados. Una vez construido un grafo de estados, la máquina de estados puede ejecutarlo. El algoritmo de ejecución de StateMachine se basa en el algoritmo State Chart XML (SCXML). La visión general del framework ofrece varios grafos de estado y el código para construirlos.
Antes de que la máquina pueda ponerse en marcha, debe configurarse initialState. El estado inicial es el estado en el que entra la máquina cuando se inicia. A continuación, puede establecer la propiedad running a true o start() la máquina de estados. La señal started se emite cuando se entra en el estado inicial.
La máquina de estados procesa eventos y toma transiciones hasta que se entra en un estado final de nivel superior; la máquina de estados emite entonces la señal finished(). También puedes stop() la máquina de estados explícitamente (también puedes establecer la propiedad running a false). En este caso se emite la señal parado.
Ejemplo de uso
El siguiente fragmento muestra una máquina de estados que finalizará cuando se pulse un botón:
import QtQuick import QtQml.StateMachine as DSM Rectangle { Button { anchors.fill: parent id: button text: "Finish state" DSM.StateMachine { id: stateMachine initialState: state running: true DSM.State { id: state DSM.SignalTransition { targetState: finalState signal: button.clicked } } DSM.FinalState { id: finalState } onFinished: Qt.quit() } } }
Si se encuentra un error, la máquina buscará un errorState, y si hay uno disponible, entrará en este estado. Después de entrar en el estado de error, el tipo de error se puede recuperar con error(). La ejecución del gráfico de estados no se detendrá cuando se entre en el estado de error. Si no se aplica ningún estado de error al estado erróneo, la máquina dejará de ejecutarse y se imprimirá un mensaje de error en la consola.
Advertencia: Establecer el childMode de un StateMachine a cualquier otra cosa que no sea QState::ExclusiveStates resultará en una máquina de estado inválida, y puede llevar a un comportamiento incorrecto.
Ver también QAbstractState, State, SignalTransition, TimeoutTransition, HistoryState, y Qt State Machine Guía QML.
Documentación de propiedades
errorString : string [read-only]
La cadena de error de esta máquina de estado.
globalRestorePolicy : enumeration
La política de restauración para los estados de esta máquina de estados.
El valor por defecto de esta propiedad es QState.DontRestoreProperties.
Este enum especifica el tipo de política de restauración. La política de restauración tiene efecto cuando la máquina entra en un estado que establece una o más propiedades. Si la política de restauración se establece en QState.RestoreProperties, la máquina de estado guardará el valor original de la propiedad antes de que se establezca el nuevo valor.
Más tarde, cuando la máquina entre en un estado que no establezca un valor para la propiedad dada, la propiedad se restaurará automáticamente a su valor inicial.
Sólo se guardará un valor inicial para cada propiedad. Si la máquina de estado ya ha guardado un valor para una propiedad, no se sobrescribirá hasta que la propiedad se haya restaurado correctamente.
- QStateDontRestoreProperties La máquina de estado no debe guardar los valores iniciales de las propiedades y restaurarlos más tarde.
- QStateRestoreProperties La máquina de estado debe guardar los valores iniciales de las propiedades y restaurarlos más tarde.
running : bool
El estado de ejecución de esta máquina de estados.
Véase también start() y stop().
Documentación de señales
started()
Esta señal se emite cuando la máquina de estados ha entrado en su estado inicial (State::initialState).
Nota: El manejador correspondiente es onStarted.
Véase también running, start(), y State::finished.
stopped()
Esta señal se emite cuando la máquina de estados se ha detenido.
Nota: El manejador correspondiente es onStopped.
Véase también running, stop(), y State::finished.
Documentación del método
void start()
Inicia esta máquina de estados. La máquina restablecerá su configuración y pasará al estado inicial. Cuando se entra en un estado final de nivel superior (FinalState), la máquina emitirá la señal finished().
Nota: Una máquina de estados no se ejecutará sin un bucle de eventos en ejecución, como el bucle de eventos de la aplicación principal iniciado con QCoreApplication::exec() o QApplication::exec().
Ver también started, State::finished, stop(), State::initialState, y running.
void stop()
Detiene esta máquina de estados. La máquina de estado dejará de procesar eventos y emitirá la señal de parada.
© 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.