QState Class
La clase QState proporciona un estado de propósito general para QStateMachine. Más...
| Cabecera: | #include <QState> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS StateMachine)target_link_libraries(mytarget PRIVATE Qt6::StateMachine) |
| qmake: | QT += statemachine |
| Hereda: | QAbstractState |
| Heredado por: |
Tipos públicos
| enum | ChildMode { ExclusiveStates, ParallelStates } |
| enum | RestorePolicy { DontRestoreProperties, RestoreProperties } |
Propiedades
- childMode : ChildMode
- errorState : QAbstractState*
- initialState : QAbstractState*
Funciones públicas
| QState(QState *parent = nullptr) | |
| QState(QState::ChildMode childMode, QState *parent = nullptr) | |
| virtual | ~QState() |
| QAbstractTransition * | addTransition(QAbstractState *target) |
| void | addTransition(QAbstractTransition *transition) |
| QSignalTransition * | addTransition(const QObject *sender, const char *signal, QAbstractState *target) |
| QSignalTransition * | addTransition(const QObject *sender, PointerToMemberFunction signal, QAbstractState *target) |
| void | assignProperty(QObject *object, const char *name, const QVariant &value) |
| QBindable<QState::ChildMode> | bindableChildMode() |
| QBindable<QAbstractState *> | bindableErrorState() |
| QBindable<QAbstractState *> | bindableInitialState() |
| QState::ChildMode | childMode() const |
| QAbstractState * | errorState() const |
| QAbstractState * | initialState() const |
| void | removeTransition(QAbstractTransition *transition) |
| void | setChildMode(QState::ChildMode mode) |
| void | setErrorState(QAbstractState *state) |
| void | setInitialState(QAbstractState *state) |
| QList<QAbstractTransition *> | transitions() const |
Señales
| void | childModeChanged() |
| void | errorStateChanged() |
| void | finished() |
| void | initialStateChanged() |
| void | propertiesAssigned() |
Funciones protegidas reimplementadas
| virtual bool | event(QEvent *e) override |
| virtual void | onEntry(QEvent *event) override |
| virtual void | onExit(QEvent *event) override |
Descripción Detallada
Los objetos QState pueden tener estados hijos, y pueden tener transiciones a otros estados. QState es parte de Qt State Machine Framework.
La función addTransition() añade una transición. La función removeTransition() elimina una transición. La función transitions() devuelve las transiciones salientes del estado.
La función assignProperty() se utiliza para definir las asignaciones de propiedades que deben realizarse cuando se entra en un estado.
A los estados de nivel superior se les debe pasar un objeto QStateMachine como estado padre, o añadirse a una máquina de estados utilizando QStateMachine::addState().
Estados con estados hijos
La propiedad childMode determina cómo se tratan los estados hijos. Para grupos de estados no paralelos, se debe llamar a la función setInitialState() para establecer el estado inicial. Los estados hijos son estados mutuamente excluyentes, y la máquina de estados necesita saber en qué estado hijo entrar cuando el estado padre es el objetivo de una transición.
El estado emite la señal QState::finished() cuando se entra en un estado hijo final (QFinalState).
La señal setErrorState() establece el estado de error del estado. El estado de error es el estado al que la máquina de estados realizará la transición si se detecta un error al intentar entrar en el estado (por ejemplo, porque no se ha establecido un estado inicial).
Documentación de tipos de miembros
enum QState::ChildMode
Este enum especifica cómo se tratan los estados hijos de un estado.
| Constante | Valor | Descripción |
|---|---|---|
QState::ExclusiveStates | 0 | Los estados hijos son mutuamente excluyentes y debe establecerse un estado inicial llamando a QState::setInitialState(). |
QState::ParallelStates | 1 | Los estados hijos son paralelos. Cuando se introduce el estado padre, todos sus estados hijos se introducen en paralelo. |
enum QState::RestorePolicy
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 como 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 estados ya ha guardado un valor para una propiedad, no se sobrescribirá hasta que la propiedad se haya restaurado correctamente.
| Constante | Valor | Descripción |
|---|---|---|
QState::DontRestoreProperties | 0 | La máquina de estados no debe guardar los valores iniciales de las propiedades y restaurarlos más tarde. |
QState::RestoreProperties | 1 | La máquina de estados debe guardar los valores iniciales de las propiedades y restaurarlos más tarde. |
Véase también QStateMachine::globalRestorePolicy y QState::assignProperty().
Documentación de Propiedades
[bindable] childMode : ChildMode
Nota: Esta propiedad soporta enlaces QProperty.
Esta propiedad contiene el modo hijo de este estado
El valor por defecto de esta propiedad es QState::ExclusiveStates.
Funciones de acceso:
| QState::ChildMode | childMode() const |
| void | setChildMode(QState::ChildMode mode) |
Señal de notificador:
| void | childModeChanged() | [see note below] |
Nota: Se trata de una señal privada. Puede ser utilizada en conexiones de señal pero no puede ser emitida por el usuario.
[bindable] errorState : QAbstractState*
Nota: Esta propiedad admite enlaces QProperty.
Esta propiedad contiene el estado de error de este estado
Funciones de acceso:
| QAbstractState * | errorState() const |
| void | setErrorState(QAbstractState *state) |
Señal de notificador:
| void | errorStateChanged() | [see note below] |
Nota: Se trata de una señal privada. Puede utilizarse en conexiones de señal pero no puede ser emitida por el usuario.
[bindable] initialState : QAbstractState*
Nota: Esta propiedad admite los enlaces QProperty.
Esta propiedad contiene el estado inicial de este estado (uno de sus estados hijos)
Funciones de acceso:
| QAbstractState * | initialState() const |
| void | setInitialState(QAbstractState *state) |
Señal de notificador:
| void | initialStateChanged() | [see note below] |
Nota: Se trata de una señal privada. Puede utilizarse en conexiones de señal pero no puede ser emitida por el usuario.
Documentación de las funciones miembro
QState::QState(QState *parent = nullptr)
Construye un nuevo estado con el estado parent dado.
QState::QState(QState::ChildMode childMode, QState *parent = nullptr)
Construye un nuevo estado con el childMode dado y el estado parent dado.
[virtual noexcept] QState::~QState()
Destruye este estado.
QAbstractTransition *QState::addTransition(QAbstractState *target)
Añade una transición incondicional de este estado al estado target dado, y devuelve entonces un nuevo objeto de transición.
void QState::addTransition(QAbstractTransition *transition)
Añade el estado transition. La transición tiene este estado como origen. Este estado toma posesión de la transición.
QSignalTransition *QState::addTransition(const QObject *sender, const char *signal, QAbstractState *target)
Añade una transición asociada con el signal dado del objeto sender dado, y devuelve el nuevo objeto QSignalTransition. La transición tiene este estado como origen y el target dado como destino.
template <typename PointerToMemberFunction> QSignalTransition *QState::addTransition(const QObject *sender, PointerToMemberFunction signal, QAbstractState *target)
Añade una transición asociada con el signal dado del objeto sender dado, y devuelve el nuevo objeto QSignalTransition. La transición tiene este estado como origen y el target dado como destino.
Se trata de una función sobrecargada.
void QState::assignProperty(QObject *object, const char *name, const QVariant &value)
Ordena a este estado que establezca la propiedad con el name dado del object dado al value dado cuando se entra en el estado.
Véase también propertiesAssigned().
QState::ChildMode QState::childMode() const
Devuelve el modo hijo de este estado.
Nota: Función Getter para la propiedad childMode.
Véase también setChildMode().
[private signal] void QState::childModeChanged()
Esta señal se emite cuando se modifica la propiedad childMode.
Nota: Se trata de una señal privada. Puede ser utilizada en conexiones de señales pero no puede ser emitida por el usuario.
Nota: Señal notificadora para la propiedad childMode.
Véase también QState::childMode.
QAbstractState *QState::errorState() const
Devuelve el estado de error de este estado.
Nota: Función Getter para la propiedad errorState.
Véase también setErrorState() y QStateMachine::error().
[private signal] void QState::errorStateChanged()
Esta señal se emite cuando se modifica la propiedad errorState.
Nota: Se trata de una señal privada. Puede ser utilizada en conexiones de señales pero no puede ser emitida por el usuario.
Nota: Señal notificadora para la propiedad errorState.
Véase también QState::errorState.
[override virtual protected] bool QState::event(QEvent *e)
Reimplementa: QAbstractState::event(QEvent *e).
[private signal] void QState::finished()
Esta señal se emite cuando se entra en un estado hijo final de este estado.
Nota: Se trata de una señal privada. Puede ser utilizada en conexiones de señales pero no puede ser emitida por el usuario.
Véase también QFinalState.
QAbstractState *QState::initialState() const
Devuelve el estado inicial de este estado, o nullptr si el estado no tiene estado inicial.
Nota: Función Getter para la propiedad initialState.
Véase también setInitialState().
[private signal] void QState::initialStateChanged()
Esta señal se emite cuando se modifica la propiedad initialState.
Nota: Se trata de una señal privada. Puede ser utilizada en conexiones de señales pero no puede ser emitida por el usuario.
Nota: Señal notificadora para la propiedad initialState.
Véase también QState::initialState.
[override virtual protected] void QState::onEntry(QEvent *event)
Reimplementa: QAbstractState::onEntry(QEvent *event).
[override virtual protected] void QState::onExit(QEvent *event)
Reimplementa: QAbstractState::onExit(QEvent *event).
[private signal] void QState::propertiesAssigned()
Esta señal se emite cuando a todas las propiedades se les ha asignado su valor final. Si el estado asigna un valor a una o más propiedades para las que existe una animación (ya sea establecida en la transición o como animación por defecto en la máquina de estados), entonces la señal no se emitirá hasta que todas esas animaciones hayan terminado de reproducirse.
Si no hay animaciones relevantes, o no hay asignaciones de propiedades definidas para el estado, entonces la señal se emitirá inmediatamente antes de entrar en el estado.
Véase también QState::assignProperty() y QAbstractTransition::addAnimation()
Nota: Se trata de una señal privada. Puede ser utilizada en conexiones de señales pero no puede ser emitida por el usuario.
void QState::removeTransition(QAbstractTransition *transition)
Elimina el transition dado de este estado. El estado libera la propiedad de la transición.
Véase también addTransition().
void QState::setChildMode(QState::ChildMode mode)
Establece el hijo mode de este estado.
Nota: Función Setter para la propiedad childMode.
Véase también childMode().
void QState::setErrorState(QAbstractState *state)
Establece el estado de error de este estado en state. Si el estado de error no se establece, o si se establece en nullptr, el estado heredará el estado de error de su padre recursivamente. Si no se establece ningún estado de error para el propio estado o cualquiera de sus ancestros, un error hará que la máquina deje de ejecutarse y se imprimirá un error en la consola.
Nota: Función setter para la propiedad errorState.
Véase también errorState().
void QState::setInitialState(QAbstractState *state)
Establece el estado inicial de este estado en state. state tiene que ser hijo de este estado.
Nota: Función Setter para la propiedad initialState.
Véase también initialState().
QList<QAbstractTransition *> QState::transitions() const
Devuelve las transiciones salientes de este estado (es decir, transiciones en las que este estado es el source state), o una lista vacía si este estado no tiene transiciones salientes.
Véase también addTransition().
© 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.