Sur cette page

StateMachine QML Type

Fournit un automate hiérarchique à états finis. Plus d'informations...

Import Statement: import QtQml.StateMachine 6.11
Inherits:

State

Propriétés

Signaux

Méthodes

Description détaillée

StateMachine est basé sur les concepts et la notation des Statecharts. StateMachine fait partie de Qt State Machine QML API

Une machine à états gère un ensemble d'états et de transitions entre ces états ; ces états et transitions définissent un graphe d'états. Une fois qu'un graphe d'états a été construit, la machine à états peut l'exécuter. L'algorithme d'exécution de StateMachine est basé sur l'algorithme State Chart XML (SCXML). La vue d'ensemble du framework présente plusieurs graphes d'état et le code permettant de les construire.

Avant que la machine puisse être démarrée, le site initialState doit être configuré. L'état initial est l'état dans lequel la machine entre lorsqu'elle est démarrée. Vous pouvez ensuite définir la propriété running à true ou start() la machine à états. Le signal started est émis lorsque l'état initial est atteint.

La machine à états traite les événements et effectue les transitions jusqu'à ce qu'un état final de haut niveau soit atteint ; la machine à états émet alors le signal finished(). Vous pouvez également stop() l'automate à états explicitement (vous pouvez également définir la propriété running sur false). Dans ce cas, le signal stopped est émis.

Exemple d'utilisation

L'extrait suivant montre un automate à états qui se termine lorsqu'un bouton est cliqué :

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 une erreur est rencontrée, la machine cherchera un errorState, et s'il y en a un de disponible, elle entrera dans cet état. Une fois que l'état d'erreur est entré, le type de l'erreur peut être récupéré avec error(). L'exécution du graphe d'état ne s'arrête pas lorsque l'état d'erreur est entré. Si aucun état d'erreur ne s'applique à l'état erroné, la machine cessera de s'exécuter et un message d'erreur sera imprimé sur la console.

Attention : Définir le childMode d'une StateMachine à une valeur autre que QState::ExclusiveStates entraînera une machine à états invalide et peut conduire à un comportement incorrect.


Voir également QAbstractState, State, SignalTransition, TimeoutTransition, HistoryState, et Qt State Machine QML Guide.

Documentation sur les propriétés

errorString : string [read-only]

La chaîne d'erreur de cette machine d'état.

globalRestorePolicy : enumeration

La politique de restauration des états de cette machine à états.

La valeur par défaut de cette propriété est QState. DontRestoreProperties.

Cette énumération spécifie le type de politique de restauration. La politique de restauration prend effet 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 QState.RestoreProperties, la machine d'état enregistre la valeur originale 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, la propriété sera automatiquement restaurée à sa valeur initiale.

Une seule valeur initiale sera sauvegardée pour une propriété donnée. Si une valeur pour une 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.

  • QState.DontRestoreProperties L'automate à états ne doit pas enregistrer les valeurs initiales des propriétés et les restaurer ultérieurement.
  • QState.RestoreProperties L'automate à états doit enregistrer les valeurs initiales des propriétés et les restaurer ultérieurement.

running : bool

L'état de fonctionnement de cette machine à états.

Voir également start() et stop().

Documentation sur les signaux

started()

Ce signal est émis lorsque la machine à états est entrée dans son état initial (State::initialState).

Remarque : le gestionnaire correspondant est onStarted.

Voir également running, start(), et State::finished.

stopped()

Ce signal est émis lorsque la machine à états s'est arrêtée.

Remarque : le gestionnaire correspondant est onStopped.

Voir également running, stop(), et State::finished.

Documentation de la méthode

void start()

Démarre cette machine d'état. La machine réinitialise sa configuration et passe à l'état initial. Lorsqu'un état final de niveau supérieur (FinalState) est atteint, la machine émet le signal finished().

Remarque : une machine à états ne fonctionnera pas sans une boucle d'événements en cours, telle que la boucle d'événements de l'application principale lancée avec QCoreApplication::exec() ou QApplication::exec().

Voir également started, State::finished, stop(), State::initialState et running.

void stop()

Arrête cette machine à états. L'automate d'état cessera de traiter les événements et émettra le signal d'arrêt.

Voir également stopped, start() et running.

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