StateMachine QML Type
Stellt einen hierarchischen endlichen Zustandsautomaten bereit. Mehr...
Import Statement: | import QtQml.StateMachine 6.8 |
Inherits: |
Eigenschaften
- errorString : string
- globalRestorePolicy : enumeration
- running : bool
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 |
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.
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() |
© 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.