Auf dieser Seite

StateMachine QML Type

Stellt eine hierarchische endliche Zustandsmaschine bereit. Mehr...

Import Statement: import QtQml.StateMachine 6.12
Inherits:

State

Eigenschaften

Signale

Methoden

Ausführliche Beschreibung

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

Eine Zustandsmaschine verwaltet eine Reihe 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 die Zustandsmaschine diesen ausführen. Der Ausführungsalgorithmus von StateMachine basiert auf dem State Chart XML (SCXML) -Algorithmus. Die Übersicht über das Framework enthält mehrere Zustandsgraphen sowie den Code zu deren Erstellung.

Bevor die Maschine gestartet werden kann, muss der „ initialState “ festgelegt werden. Der Anfangszustand ist der Zustand, in den die Maschine beim Start wechselt. Anschließend können Sie die Eigenschaft „running“ auf „true“ setzen oder die Zustandsmaschine mit „ start()“ starten. Das Signal „started“ wird ausgelöst, sobald der Anfangszustand erreicht ist.

Die Zustandsmaschine verarbeitet Ereignisse und führt Übergänge durch, bis ein Endzustand der obersten Ebene erreicht ist; die Zustandsmaschine gibt dann das Signal „finished()“ aus. Sie können die Zustandsmaschine auch explizit mit „ stop()“ anhalten (Sie können auch die Eigenschaft „running“ auf „false“ setzen). In diesem Fall wird das Signal „stopped“ ausgegeben.

Anwendungsbeispiel

Der folgende Codeausschnitt zeigt eine Zustandsmaschine, die 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()
        }
    }
}

Tritt ein Fehler auf, sucht die Maschine nach einem ` errorState`; ist einer verfügbar, wechselt sie in diesen Zustand. Nach dem Eintritt in den Fehlerzustand kann die Art des Fehlers mit `error()` abgerufen werden. Die Ausführung des Zustandsgraphen wird beim Eintritt in den Fehlerzustand nicht angehalten. Wenn für den fehlerhaften Zustand kein Fehlerzustand zutrifft, beendet die Maschine die Ausführung und es wird eine Fehlermeldung auf der Konsole ausgegeben.

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


Siehe auch „ QAbstractState“ , „ State “, „ SignalTransition “, „ TimeoutTransition “, „ HistoryState “ und „Qt State Machine “ im QML-Handbuch.

Dokumentation zu Eigenschaften

errorString : string [read-only]

Die Fehlermeldung dieser Zustandsmaschine.

globalRestorePolicy : enumeration

Die Wiederherstellungsrichtlinie für die Zustände dieser Zustandsmaschine.

Der Standardwert dieser Eigenschaft lautet „ QState.DontRestoreProperties“.

Diese Enumeration legt den Typ der Wiederherstellungsrichtlinie fest. Die Wiederherstellungsrichtlinie wird wirksam, wenn die Maschine in einen Zustand wechselt, in dem eine oder mehrere Eigenschaften gesetzt werden. Ist die Wiederherstellungsrichtlinie auf „ QState.RestoreProperties“ gesetzt, speichert die Zustandsmaschine den ursprünglichen Wert der Eigenschaft, bevor der neue Wert gesetzt wird.

Später, wenn die Maschine entweder in einen Zustand wechselt, in dem kein Wert für die betreffende Eigenschaft gesetzt wird, wird die Eigenschaft automatisch auf ihren ursprünglichen Wert zurückgesetzt.

Für jede Eigenschaft wird nur ein Anfangswert gespeichert. Wenn ein Wert für eine Eigenschaft bereits von der Zustandsmaschine gespeichert wurde, wird er erst überschrieben, wenn die Eigenschaft erfolgreich wiederhergestellt wurde.

  • QState.DontRestoreProperties Die Zustandsmaschine sollte die Anfangswerte von Eigenschaften nicht speichern und später wiederherstellen.
  • QState.RestoreProperties Die Zustandsmaschine soll die Anfangswerte der Eigenschaften speichern und später wiederherstellen.

running : bool

Der aktuelle Zustand dieser Zustandsmaschine.

Siehe auch start() und stop().

Signal-Dokumentation

started()

Dieses Signal wird ausgesendet, wenn die Zustandsmaschine in ihren Anfangszustand (State::initialState) übergegangen ist.

Hinweis: Der entsprechende Handler ist onStarted.

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

stopped()

Dieses Signal wird ausgegeben, wenn die Zustandsmaschine angehalten wurde.

Hinweis: Der entsprechende Handler ist „ onStopped “.

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

Methodendokumentation

void start()

Startet diese Zustandsmaschine. Die Maschine setzt ihre Konfiguration zurück und wechselt in den Anfangszustand. Wenn ein endgültiger Zustand der obersten Ebene (FinalState) erreicht wird, gibt die Maschine das Signal „finished()“ aus.

Hinweis: Eine Zustandsmaschine läuft nicht ohne eine aktive Ereignisschleife, wie beispielsweise die mit ` QCoreApplication::exec()` oder ` QApplication::exec()` gestartete Hauptanwendungs-Ereignisschleife.

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

void stop()

Hält diese Zustandsmaschine an. Die Zustandsmaschine stellt die Verarbeitung von Ereignissen ein und sendet anschließend das Signal „stopped“ aus.

Siehe auch „ stopped“ , „ start()“ und „ 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.