Sur cette page

QState Class

La classe QState fournit un état polyvalent pour l'QStateMachine. En savoir plus...

En-tête : #include <QState>
CMake : find_package(Qt6 REQUIRED COMPONENTS StateMachine)
target_link_libraries(mytarget PRIVATE Qt6::StateMachine)
qmake : QT += statemachine
Hérite de : QAbstractState
Hérité par :

QStateMachine

Types publics

enum ChildMode { ExclusiveStates, ParallelStates }
enum RestorePolicy { DontRestoreProperties, RestoreProperties }

Propriétés

Fonctions publiques

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

Signaux

Fonctions protégées réimplémentées

virtual bool event(QEvent *e) override
virtual void onEntry(QEvent *event) override
virtual void onExit(QEvent *event) override

Description détaillée

Les objets QState peuvent avoir des états enfants et des transitions vers d'autres états. QState fait partie du frameworkQt State Machine .

La fonction addTransition() ajoute une transition. La fonction removeTransition() supprime une transition. La fonction transitions() renvoie les transitions sortantes de l'état.

La fonction ` assignProperty()` sert à définir les affectations de propriétés qui doivent être effectuées lors de l’entrée dans un état.

Les états de niveau supérieur doivent se voir transmettre un objet ` QStateMachine ` en tant qu’état parent, ou être ajoutés à une machine à états à l’aide de ` QStateMachine::addState()`.

États avec des états enfants

La propriété ` childMode ` détermine la manière dont les états enfants sont traités. Pour les groupes d’états non parallèles, la fonction ` setInitialState()` doit être appelée pour définir l’état initial. Les états enfants sont des états mutuellement exclusifs, et la machine à états doit savoir dans quel état enfant entrer lorsque l’état parent est la cible d’une transition.

L'état émet le signal ` QState::finished()` lorsqu'un état enfant final (QFinalState) est atteint.

La fonction ` setErrorState()` définit l’état d’erreur de l’état. L’état d’erreur est l’état vers lequel la machine à états effectuera une transition si une erreur est détectée lors de la tentative d’entrée dans l’état (par exemple, parce qu’aucun état initial n’a été défini).

Documentation sur les types de membres

enum QState::ChildMode

Cette énumération définit la manière dont les états enfants d'un état sont traités.

ConstanteValeurDescription
QState::ExclusiveStates0Les états enfants sont mutuellement exclusifs et un état initial doit être défini en appelant la fonction QState::setInitialState().
QState::ParallelStates1Les états enfants sont parallèles. Lorsque l'état parent est activé, tous ses états enfants sont activés en parallèle.

enum QState::RestorePolicy

Cette énumération spécifie le type de politique de restauration. La politique de restauration s'applique lorsque la machine entre dans un état qui définit une ou plusieurs propriétés. Si la politique de restauration est définie sur « RestoreProperties », la machine à états enregistrera la valeur d'origine de la propriété avant que la nouvelle valeur ne soit définie.

Par la suite, lorsque la machine entrera dans un état qui ne définit pas de valeur pour la propriété donnée, celle-ci sera automatiquement restaurée à sa valeur initiale.

Une seule valeur initiale sera enregistrée pour chaque propriété. Si une valeur de propriété a déjà été enregistrée par la machine à états, elle ne sera pas écrasée tant que la propriété n’aura pas été restaurée avec succès.

ConstanteValeurDescription
QState::DontRestoreProperties0La machine à états ne doit pas enregistrer les valeurs initiales des propriétés ni les restaurer ultérieurement.
QState::RestoreProperties1La machine à états doit enregistrer les valeurs initiales des propriétés et les restaurer ultérieurement.

Voir également QStateMachine::globalRestorePolicy et QState::assignProperty().

Documentation sur les propriétés

[bindable] childMode : ChildMode

Remarque : cette propriété prend en charge les liaisons de type « QProperty ».

Cette propriété contient le mode enfant de cet état

La valeur par défaut de cette propriété est « QState::ExclusiveStates ».

Fonctions d'accès :

QState::ChildMode childMode() const
void setChildMode(QState::ChildMode mode)

Signal de notification :

void childModeChanged()[see note below]

Remarque : il s'agit d'un signal privé. Il peut être utilisé dans des connexions de signaux, mais ne peut pas être émis par l'utilisateur.

[bindable] errorState : QAbstractState*

Remarque : cette propriété prend en charge les liaisons de type « QProperty ».

Cette propriété contient l'état d'erreur de cet état

Fonctions d'accès :

QAbstractState *errorState() const
void setErrorState(QAbstractState *state)

Signal de notification :

void errorStateChanged()[see note below]

Remarque : il s'agit d'un signal privé. Il peut être utilisé dans des connexions de signaux, mais ne peut pas être émis par l'utilisateur.

[bindable] initialState : QAbstractState*

Remarque : cette propriété prend en charge les liaisons de type « QProperty ».

Cette propriété contient l'état initial de cet état (l'un de ses états enfants)

Fonctions d’accès :

QAbstractState *initialState() const
void setInitialState(QAbstractState *state)

Signal de notification :

void initialStateChanged()[see note below]

Remarque : il s'agit d'un signal privé. Il peut être utilisé dans des connexions de signaux, mais ne peut pas être émis par l'utilisateur.

Documentation des fonctions membres

QState::QState(QState *parent = nullptr)

Crée un nouvel état à partir de l'état « parent » donné.

QState::QState(QState::ChildMode childMode, QState *parent = nullptr)

Crée un nouvel état à partir de l'childMode ion fournie et de l'état parent donné.

[virtual noexcept] QState::~QState()

Supprime cet état.

QAbstractTransition *QState::addTransition(QAbstractState *target)

Ajoute une transition inconditionnelle entre cet état et l'état « target » spécifié, puis renvoie le nouvel objet de transition.

void QState::addTransition(QAbstractTransition *transition)

Ajoute la transition spécifiée transition. Cette transition a cet état comme point de départ. Cet état devient responsable de la transition.

QSignalTransition *QState::addTransition(const QObject *sender, const char *signal, QAbstractState *target)

Ajoute une transition associée à l'signal donné de l'objet sender spécifié, puis renvoie le nouvel objet QSignalTransition. La transition a cet état comme état source et l'target donné comme état cible.

template <typename PointerToMemberFunction> QSignalTransition *QState::addTransition(const QObject *sender, PointerToMemberFunction signal, QAbstractState *target)

Ajoute une transition associée à l'signal donné de l'objet sender spécifié, puis renvoie le nouvel objet QSignalTransition. La transition a cet état comme état source et l'target donné comme état cible.

Il s’agit d’une fonction surchargée.

void QState::assignProperty(QObject *object, const char *name, const QVariant &value)

Demande à cet état de définir la propriété, dont l'name correspond à celle de l'object, sur la valeur indiquée value lorsque l'état est activé.

Voir également propertiesAssigned().

QState::ChildMode QState::childMode() const

Renvoie le mode enfant de cet état.

Remarque : fonctiongetter pour la propriété childMode.

Voir aussi setChildMode().

[private signal] void QState::childModeChanged()

Ce signal est émis lorsque la propriété « childMode » est modifiée.

Remarque : il s'agit d'un signal privé. Il peut être utilisé dans des connexions de signaux, mais ne peut pas être émis par l'utilisateur.

Remarque : signalde notification pour la propriété childMode.

Voir également QState::childMode.

QAbstractState *QState::errorState() const

Renvoie l'état d'erreur de cet état.

Remarque : fonctiongetter pour la propriété errorState.

Voir également setErrorState() et QStateMachine::error().

[private signal] void QState::errorStateChanged()

Ce signal est émis lorsque la propriété « errorState » est modifiée.

Remarque : il s'agit d'un signal privé. Il peut être utilisé dans les connexions de signaux, mais ne peut pas être émis par l'utilisateur.

Remarque : signalde notification pour la propriété errorState.

Voir également QState::errorState.

[override virtual protected] bool QState::event(QEvent *e)

Réimplémente : QAbstractState::event(QEvent *e).

[private signal] void QState::finished()

Ce signal est émis lorsqu'un état enfant final de cet état est atteint.

Remarque : il s’agit d’un signal privé. Il peut être utilisé dans des connexions de signaux, mais ne peut pas être émis par l’utilisateur.

Voir également QFinalState.

QAbstractState *QState::initialState() const

Renvoie l'état initial de cet état, ou ` nullptr ` si l'état n'a pas d'état initial.

Remarque : fonctiongetter pour la propriété initialState.

Voir aussi setInitialState().

[private signal] void QState::initialStateChanged()

Ce signal est émis lorsque la propriété « initialState » est modifiée.

Remarque : il s'agit d'un signal privé. Il peut être utilisé dans les connexions de signaux, mais ne peut pas être émis par l'utilisateur.

Remarque : signalde notification pour la propriété « initialState ».

Voir également QState::initialState.

[override virtual protected] void QState::onEntry(QEvent *event)

Réimplémente : QAbstractState::onEntry(QEvent *event).

[override virtual protected] void QState::onExit(QEvent *event)

Réimplémente : QAbstractState::onExit(QEvent *event).

[private signal] void QState::propertiesAssigned()

Ce signal est émis lorsque toutes les propriétés ont reçu leur valeur finale. Si l'état attribue une valeur à une ou plusieurs propriétés pour lesquelles une animation existe (qu'elle soit définie lors de la transition ou en tant qu'animation par défaut dans la machine à états), le signal ne sera pas émis tant que toutes ces animations n'auront pas fini de s'exécuter.

S'il n'y a pas d'animations concernées, ou si aucune attribution de propriété n'est définie pour l'état, le signal sera émis immédiatement avant l'entrée dans l'état.

Voir également QState::assignProperty() et QAbstractTransition::addAnimation()

Remarque : il s’agit d’un signal privé. Il peut être utilisé dans des connexions de signaux, mais ne peut pas être émis par l’utilisateur.

void QState::removeTransition(QAbstractTransition *transition)

Supprime l'transition on indiquée de cet état. L'état libère la propriété de la transition.

Voir aussi addTransition().

void QState::setChildMode(QState::ChildMode mode)

Définit l'mode enfant de cet état.

Remarque : fonctionde définition de la propriété childMode.

Voir aussi ` childMode()`.

void QState::setErrorState(QAbstractState *state)

Définit l'état d'erreur de cet état sur la valeur spécifiée : state. Si l'état d'erreur n'est pas défini, ou s'il est défini sur nullptr, l'état héritera de l'état d'erreur de son parent de manière récursive. Si aucun état d'erreur n'est défini pour l'état lui-même ou pour l'un de ses ancêtres, une erreur entraînera l'arrêt de l'exécution de la machine et un message d'erreur sera affiché sur la console.

Remarque : fonctionde définition de la propriété errorState.

Voir également errorState().

void QState::setInitialState(QAbstractState *state)

Définit l'état initial de cet état sur l'state spécifiée. state doit être un enfant de cet état.

Remarque : fonctionde définition de la propriété ` initialState`.

Voir aussi initialState().

QList<QAbstractTransition *> QState::transitions() const

Renvoie les transitions sortantes de cet état (c'est-à-dire les transitions dont cet état est l'source state), ou une liste vide si cet état ne possède aucune transition sortante.

Voir également 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.