StateMachine QML Type

Stellt einen hierarchischen endlichen Zustandsautomaten bereit. Mehr...

Import Statement: import QtQml.StateMachine 6.8
Inherits:

State

Eigenschaften

Signale

Methoden

Detaillierte Beschreibung

StateMachine basiert auf den Konzepten und der Notation von Statecharts. StateMachine ist Teil der Qt State Machine QML API

Ein Zustandsautomat verwaltet eine Menge von Zuständen und Übergängen zwischen diesen Zuständen; diese Zustände und Übergänge definieren einen Zustandsgraphen. Sobald ein Zustandsgraph erstellt wurde, kann der Zustandsautomat ihn ausführen. Der Ausführungsalgorithmus von StateMachine basiert auf dem State Chart XML (SCXML) Algorithmus. In der Übersicht des Frameworks sind verschiedene Zustandsgraphen und der Code zu deren Erstellung aufgeführt.

Bevor die Maschine gestartet werden kann, muss die initialState gesetzt werden. Der Ausgangszustand ist der Zustand, in den die Maschine beim Start übergeht. Sie können dann die Eigenschaft running auf true setzen oder start() den Automaten starten. Das Startsignal wird ausgegeben, wenn der Ausgangszustand erreicht ist.

Der Zustandsautomat verarbeitet Ereignisse und nimmt Übergänge vor, bis ein Endzustand der obersten Ebene erreicht ist; dann gibt der Zustandsautomat das Signal finished() aus. Sie können den Zustandsautomaten auch explizit stop() aufrufen (Sie können auch die Eigenschaft running auf false setzen). In diesem Fall wird das Signal stopped ausgegeben.

Beispielverwendung

Der folgende Ausschnitt zeigt einen Zustandsautomaten, der beendet wird, wenn eine Schaltfläche angeklickt wird:

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()
        }
    }
}

Wenn ein Fehler auftritt, sucht der Automat nach einem errorState, und wenn ein solcher vorhanden ist, wird er in diesen Zustand versetzt. Nachdem der Fehlerzustand eingetreten ist, kann die Art des Fehlers mit error() abgefragt werden. Die Ausführung des Zustandsgraphen wird nicht angehalten, wenn der Fehlerzustand erreicht ist. Trifft kein Fehlerzustand auf den fehlerhaften Zustand zu, stoppt die Ausführung des Automaten und es wird eine Fehlermeldung auf der Konsole ausgegeben.

Warnung: Wenn der childMode einer StateMachine auf einen anderen Wert als QState::ExclusiveStates gesetzt wird, führt dies zu einer ungültigen StateMachine und kann zu fehlerhaftem Verhalten führen.


Siehe auch QAbstractState, State, SignalTransition, TimeoutTransition, HistoryState, und Qt State Machine QML Guide.

Eigenschaft Dokumentation

errorString : string [read-only]

Der Fehlerstring dieses Zustandsautomaten.


globalRestorePolicy : enumeration

Die Wiederherstellungsrichtlinie für Zustände dieses Zustandsautomaten.

Der Standardwert für diese Eigenschaft ist QState.DontRestoreProperties.

Diese Aufzählung gibt den Typ der Wiederherstellungsrichtlinie an. Die Wiederherstellungsrichtlinie tritt in Kraft, wenn der Automat in einen Zustand eintritt, der eine oder mehrere Eigenschaften festlegt. Wenn die Wiederherstellungsrichtlinie auf QState.RestoreProperties gesetzt ist, speichert der Zustandsautomat den ursprünglichen Wert der Eigenschaft, bevor der neue Wert gesetzt wird.

Wenn der Automat später in einen Zustand eintritt, in dem kein Wert für die betreffende Eigenschaft festgelegt ist, wird die Eigenschaft automatisch auf ihren ursprünglichen Wert zurückgesetzt.

Für eine bestimmte Eigenschaft wird nur ein Anfangswert gespeichert. Wenn der Zustandsautomat bereits einen Wert für eine Eigenschaft gespeichert hat, wird dieser nicht überschrieben, bis die Eigenschaft erfolgreich wiederhergestellt wurde.

  • QState.DontRestoreProperties Der Zustandsautomat sollte die Anfangswerte von Eigenschaften nicht speichern und später wiederherstellen.
  • QState.RestoreProperties Der Zustandsautomat soll die Anfangswerte von Eigenschaften speichern und später wiederherstellen.

running : bool

Der laufende Zustand dieses Zustandsautomaten.

Siehe auch start() und stop().


Signal Dokumentation

started()

Dieses Signal wird ausgegeben, wenn der Zustandsautomat seinen Anfangszustand erreicht hat (State::initialState).

Hinweis: Der entsprechende Handler ist onStarted.

Siehe auch running, start(), und State::finished.


stopped()

Dieses Signal wird ausgegeben, wenn der Zustandsautomat angehalten wurde.

Hinweis: Der entsprechende Handler ist onStopped.

Siehe auch running, stop(), und State::finished.


Methode Dokumentation

start()

Startet diesen Zustandsautomaten. Der Automat setzt seine Konfiguration zurück und geht in den Anfangszustand über. Wenn ein endgültiger Top-Level-Zustand (FinalState) erreicht ist, gibt der Automat das Signal finished() aus.

Hinweis: Ein Zustandsautomat läuft nicht ohne eine laufende Ereignisschleife, wie z. B. die Ereignisschleife der Hauptanwendung, die mit QCoreApplication::exec() oder QApplication::exec() gestartet wird.

Siehe auch started, State::finished, stop(), State::initialState, und running.


stop()

Hält diesen Zustandsautomaten an. Der Zustandsautomat beendet die Verarbeitung von Ereignissen und gibt dann das Stoppsignal aus.

Siehe auch stopped, start(), und running.


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