Sur cette page

StateMachine QML Type

Fournit une machine à états finis hiérarchique. En savoir plus…

Import Statement: import QtQml.StateMachine 6.12
Inherits:

State

Propriétés

Signaux

Méthodes

Description détaillée

StateMachine s'appuie sur les concepts et la notation des diagrammes d'états (Statecharts). StateMachine fait partie de l'API QML d'Qt State Machine

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 le graphe d’états construit, la machine à états peut l’exécuter. L’algorithme d’exécution de StateMachine repose sur l’algorithme State Chart XML (SCXML). La présentation générale du framework fournit plusieurs graphes d’états ainsi que le code permettant de les construire.

Avant de pouvoir démarrer la machine, il faut définir l’ initialState. L’état initial est l’état dans lequel la machine entre au démarrage. Vous pouvez ensuite définir la propriété `running` sur `true` ou appeler ` start()` sur la machine à états. Le signal `started` est émis lorsque l’état initial est atteint.

La machine à états traite les événements et effectue des transitions jusqu’à ce qu’elle atteigne un état final de niveau supérieur ; elle émet alors le signal `finished()`. Vous pouvez également arrêter explicitement la machine à états à l’aide de la méthode ` stop()` (vous pouvez également définir la propriété `running` sur `false`). Dans ce cas, le signal `stopped` est émis.

Exemple d’utilisation

L'extrait de code suivant montre une machine à états qui s'arrête lorsqu'on clique sur un bouton :

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 se produit, la machine recherchera un état « errorState » et, si celui-ci est disponible, elle passera dans cet état. Une fois l’état d’erreur atteint, le type d’erreur peut être récupéré à l’aide de la fonction `error()`. L’exécution du graphe d’états ne s’interrompt pas lorsque l’état d’erreur est atteint. Si aucun état d’erreur ne correspond à l’état erroné, la machine cessera son exécution et un message d’erreur s’affichera sur la console.

Avertissement : définir le paramètre `childMode` d’une `StateMachine` sur une valeur autre que ` QState::ExclusiveStates ` rendra la machine à états invalide et pourra entraîner un comportement incorrect.


Voir également les pages « QAbstractState» , « State », « SignalTransition », « TimeoutTransition », « HistoryState » et «Qt State Machine » du guide QML.

Documentation sur les propriétés

errorString : string [read-only]

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

globalRestorePolicy : enumeration

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 stratégie de restauration. La stratégie de restauration s'applique lorsque la machine entre dans un état qui définit une ou plusieurs propriétés. Si la stratégie de restauration est définie sur QState.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.

  • QState.DontRestoreProperties La machine à états ne doit pas enregistrer les valeurs initiales des propriétés ni les restaurer ultérieurement.
  • QState.RestoreProperties La machine à états doit enregistrer les valeurs initiales des propriétés et les restaurer ultérieurement.

running : bool

L'état actuel 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 des méthodes

void start()

Lance cette machine à états. 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 boucle d’événements active, telle que la boucle d’événements principale de l’application 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. La machine à états cessera de traiter les événements, puis émettra le signal « stopped ».

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.