QState Class
Die Klasse „QState“ stellt einen universell einsetzbaren Zustand für „ QStateMachine “ bereit. Mehr dazu...
| Header: | #include <QState> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS StateMachine) target_link_libraries(mytarget PRIVATE Qt6::StateMachine) |
| qmake: | QT += statemachine |
| Erbt von: | QAbstractState |
| Vererbt an: |
Öffentliche Typen
| enum | ChildMode { ExclusiveStates, ParallelStates } |
| enum | RestorePolicy { DontRestoreProperties, RestoreProperties } |
Eigenschaften
- childMode : ChildMode
- errorState : QAbstractState*
- initialState : QAbstractState*
Öffentliche Funktionen
| QState(QState *parent = nullptr) | |
| QState(QState::ChildMode childMode, QState *parent = nullptr) | |
| virtual | ~QState() |
| QAbstractTransition * | addTransition(QAbstractState *target) |
| void | addTransition(QAbstractTransition *transition) |
| QSignalTransition * | addTransition(const QObject *sender, const char *signal, QAbstractState *target) |
| QSignalTransition * | addTransition(const QObject *sender, PointerToMemberFunction signal, QAbstractState *target) |
| void | assignProperty(QObject *object, const char *name, const QVariant &value) |
| QBindable<QState::ChildMode> | bindableChildMode() |
| QBindable<QAbstractState *> | bindableErrorState() |
| QBindable<QAbstractState *> | bindableInitialState() |
| QState::ChildMode | childMode() const |
| QAbstractState * | errorState() const |
| QAbstractState * | initialState() const |
| void | removeTransition(QAbstractTransition *transition) |
| void | setChildMode(QState::ChildMode mode) |
| void | setErrorState(QAbstractState *state) |
| void | setInitialState(QAbstractState *state) |
| QList<QAbstractTransition *> | transitions() const |
Signale
| void | childModeChanged() |
| void | errorStateChanged() |
| void | finished() |
| void | initialStateChanged() |
| void | propertiesAssigned() |
Neu implementierte geschützte Funktionen
| virtual bool | event(QEvent *e) override |
| virtual void | onEntry(QEvent *event) override |
| virtual void | onExit(QEvent *event) override |
Detaillierte Beschreibung
QState-Objekte können untergeordnete Zustände haben und Übergänge zu anderen Zuständen aufweisen. QState ist Teil des „Qt State Machine “-Frameworks.
Die Funktion ` addTransition()` fügt einen Übergang hinzu. Die Funktion ` removeTransition()` entfernt einen Übergang. Die Funktion ` transitions()` gibt die ausgehenden Übergänge des Zustands zurück.
Die Funktion ` assignProperty()` dient zur Definition von Eigenschaftszuweisungen, die beim Eintritt in einen Zustand durchgeführt werden sollen.
Zustände der obersten Ebene müssen ein „ QStateMachine “-Objekt als übergeordneten Zustand übergeben bekommen oder mithilfe von „ QStateMachine::addState()“ zu einer Zustandsmaschine hinzugefügt werden.
Zustände mit untergeordneten Zuständen
Die Eigenschaft „ childMode “ legt fest, wie untergeordnete Zustände behandelt werden. Bei nicht-parallelen Zustandsgruppen muss die Funktion „ setInitialState()“ aufgerufen werden, um den Anfangszustand festzulegen. Die untergeordneten Zustände schließen sich gegenseitig aus, und die Zustandsmaschine muss wissen, in welchen untergeordneten Zustand sie wechseln soll, wenn der übergeordnete Zustand das Ziel eines Übergangs ist.
Der Zustand sendet das Signal „ QState::finished()“ aus, wenn ein endgültiger untergeordneter Zustand (QFinalState) betreten wird.
Die Funktion „ setErrorState()“ legt den Fehlerzustand des Zustands fest. Der Fehlerzustand ist der Zustand, in den die Zustandsmaschine übergeht, wenn beim Versuch, in den Zustand einzutreten, ein Fehler erkannt wird (z. B. weil kein Anfangszustand festgelegt wurde).
Dokumentation zum Mitgliedstyp
enum QState::ChildMode
Diese Enumeration legt fest, wie die untergeordneten Zustände eines Zustands behandelt werden.
| Konstante | Wert | Beschreibung |
|---|---|---|
QState::ExclusiveStates | 0 | Die untergeordneten Zustände schließen sich gegenseitig aus, und ein Anfangszustand muss durch den Aufruf von ` QState::setInitialState()` festgelegt werden. |
QState::ParallelStates | 1 | Die Unterzustände laufen parallel. Beim Eintritt in den übergeordneten Zustand werden alle seine Unterzustände parallel betreten. |
enum QState::RestorePolicy
Diese Enumeration legt den Typ der Wiederherstellungsrichtlinie fest. Die Wiederherstellungsrichtlinie wird wirksam, wenn die Zustandsmaschine in einen Zustand wechselt, in dem eine oder mehrere Eigenschaften festgelegt werden. Ist die Wiederherstellungsrichtlinie auf „RestoreProperties“ gesetzt, speichert die Zustandsmaschine den ursprünglichen Wert der Eigenschaft, bevor der neue Wert festgelegt 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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QState::DontRestoreProperties | 0 | Die Zustandsmaschine sollte die Anfangswerte von Eigenschaften nicht speichern und später wiederherstellen. |
QState::RestoreProperties | 1 | Die Zustandsmaschine sollte die Anfangswerte von Eigenschaften speichern und später wiederherstellen. |
Siehe auch QStateMachine::globalRestorePolicy und QState::assignProperty().
Eigenschaftsdokumentation
[bindable] childMode : ChildMode
Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.
Diese Eigenschaft enthält den untergeordneten Modus dieses Zustands
Der Standardwert dieser Eigenschaft lautet „ QState::ExclusiveStates “.
Zugriffsfunktionen:
| QState::ChildMode | childMode() const |
| void | setChildMode(QState::ChildMode mode) |
Notifier-Signal:
| void | childModeChanged() | [see note below] |
Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.
[bindable] errorState : QAbstractState*
Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.
Diese Eigenschaft enthält den Fehlerstatus dieses Zustands
Zugriffsfunktionen:
| QAbstractState * | errorState() const |
| void | setErrorState(QAbstractState *state) |
Benachrichtigungssignal:
| void | errorStateChanged() | [see note below] |
Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.
[bindable] initialState : QAbstractState*
Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.
Diese Eigenschaft enthält den Anfangszustand dieses Zustands (eines seiner untergeordneten Zustände).
Zugriffsfunktionen:
| QAbstractState * | initialState() const |
| void | setInitialState(QAbstractState *state) |
Notifier-Signal:
| void | initialStateChanged() | [see note below] |
Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.
Dokumentation der Mitgliedsfunktionen
QState::QState(QState *parent = nullptr)
Erstellt einen neuen Zustand auf der Grundlage des angegebenen Zustands „ parent “.
QState::QState(QState::ChildMode childMode, QState *parent = nullptr)
Erstellt einen neuen Zustand mit dem angegebenen „ childMode “ und dem angegebenen „ parent “-Zustand.
[virtual noexcept] QState::~QState()
Löst diesen Zustand auf.
QAbstractTransition *QState::addTransition(QAbstractState *target)
Fügt einen bedingungslosen Übergang von diesem Zustand zum angegebenen Zustand „ target “ hinzu und gibt anschließend das neue Übergangsobjekt zurück.
void QState::addTransition(QAbstractTransition *transition)
Fügt den angegebenen Übergang „ transition “ hinzu. Der Übergang hat diesen Zustand als Ausgangspunkt. Dieser Zustand übernimmt die Verantwortung für den Übergang.
QSignalTransition *QState::addTransition(const QObject *sender, const char *signal, QAbstractState *target)
Fügt einen Übergang hinzu, der mit dem angegebenen „ signal “ des angegebenen „ sender “-Objekts verknüpft ist, und gibt das neue „ QSignalTransition “-Objekt zurück. Der Übergang hat diesen Zustand als Ausgangszustand und den angegebenen „ target “ als Zielzustand.
template <typename PointerToMemberFunction> QSignalTransition *QState::addTransition(const QObject *sender, PointerToMemberFunction signal, QAbstractState *target)
Fügt dem angegebenen Objekt „ sender “ einen Übergang hinzu, der mit dem angegebenen „ signal “ verknüpft ist, und gibt das neue Objekt „ QSignalTransition “ zurück. Der Übergang hat diesen Zustand als Ausgangszustand und den angegebenen „ target “ als Zielzustand.
Dies ist eine überladene Funktion.
void QState::assignProperty(QObject *object, const char *name, const QVariant &value)
Weist diesen Zustand an, die Eigenschaft mit dem angegebenen name des angegebenen object beim Eintritt in den Zustand auf den angegebenen value zu setzen.
Siehe auch propertiesAssigned().
QState::ChildMode QState::childMode() const
Gibt den untergeordneten Modus dieses Zustands zurück.
Hinweis: Getter -Funktion für die Eigenschaft „childMode“.
Siehe auch „ setChildMode()“.
[private signal] void QState::childModeChanged()
Dieses Signal wird ausgelöst, wenn die Eigenschaft „ childMode “ geändert wird.
Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.
Hinweis: Notifier -Signal für die Eigenschaft „ childMode “.
Siehe auch „ QState::childMode “.
QAbstractState *QState::errorState() const
Gibt den Fehlerstatus dieses Zustands zurück.
Hinweis: Getter -Funktion für die Eigenschaft „errorState“.
Siehe auch setErrorState() und QStateMachine::error().
[private signal] void QState::errorStateChanged()
Dieses Signal wird ausgelöst, wenn die Eigenschaft „ errorState “ geändert wird.
Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.
Hinweis: Notifier -Signal für die Eigenschaft „ errorState “.
Siehe auch „ QState::errorState “.
[override virtual protected] bool QState::event(QEvent *e)
Implementiert: QAbstractState::event(QEvent *e).
[private signal] void QState::finished()
Dieses Signal wird ausgesendet, wenn ein endgültiger Unterzustand dieses Zustands erreicht wird.
Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.
Siehe auch „ QFinalState “.
QAbstractState *QState::initialState() const
Gibt den Anfangszustand dieses Zustands zurück oder „ nullptr “, falls der Zustand keinen Anfangszustand hat.
Hinweis: Getter-Funktion für die Eigenschaft `initialState`.
Siehe auch „ setInitialState()“.
[private signal] void QState::initialStateChanged()
Dieses Signal wird ausgelöst, wenn die Eigenschaft „ initialState “ geändert wird.
Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.
Hinweis: Notifier -Signal für die Eigenschaft „ initialState “.
Siehe auch „ QState::initialState “.
[override virtual protected] void QState::onEntry(QEvent *event)
Umsetzt: QAbstractState::onEntry(QEvent *event).
[override virtual protected] void QState::onExit(QEvent *event)
Umsetzt: ` QAbstractState::onExit(QEvent *event)`.
[private signal] void QState::propertiesAssigned()
Dieses Signal wird ausgesendet, wenn allen Eigenschaften ihr endgültiger Wert zugewiesen wurde. Wenn der Zustand einer oder mehreren Eigenschaften einen Wert zuweist, für die eine Animation existiert (entweder im Übergang festgelegt oder als Standardanimation in der Zustandsmaschine), wird das Signal erst ausgesendet, wenn alle diese Animationen vollständig abgespielt wurden.
Wenn keine relevanten Animationen vorhanden sind oder für den Zustand keine Eigenschaftszuweisungen definiert wurden, wird das Signal unmittelbar vor dem Eintritt in den Zustand ausgesendet.
Siehe auch „ QState::assignProperty()“ und „ QAbstractTransition::addAnimation()“
Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.
void QState::removeTransition(QAbstractTransition *transition)
Entfernt den angegebenen Übergang „ transition “ aus diesem Zustand. Der Zustand gibt die Eigentumsrechte an dem Übergang frei.
Siehe auch „ addTransition()“.
void QState::setChildMode(QState::ChildMode mode)
Legt die untergeordnete Eigenschaft „ mode “ dieses Zustands fest.
Hinweis: Setter -Funktion für die Eigenschaft „ childMode “.
Siehe auch ` childMode()`.
void QState::setErrorState(QAbstractState *state)
Setzt den Fehlerzustand dieses Zustands auf den angegebenen Wert „ state “. Ist der Fehlerzustand nicht festgelegt oder auf „ nullptr “ gesetzt, erbt der Zustand rekursiv den Fehlerzustand seines übergeordneten Zustands. Ist weder für den Zustand selbst noch für einen seiner Vorfahren ein Fehlerzustand festgelegt, führt ein Fehler dazu, dass die Maschine die Ausführung beendet und eine Fehlermeldung auf der Konsole ausgegeben wird.
Hinweis: Setter -Funktion für die Eigenschaft „ errorState “.
Siehe auch ` errorState()`.
void QState::setInitialState(QAbstractState *state)
Legt den Anfangszustand dieses Zustands auf den angegebenen „ state “ fest. „ state “ muss ein untergeordneter Zustand dieses Zustands sein.
Hinweis: Setter -Funktion für die Eigenschaft ` initialState`.
Siehe auch initialState().
QList<QAbstractTransition *> QState::transitions() const
Gibt die ausgehenden Übergänge dieses Zustands zurück (d. h. Übergänge, bei denen dieser Zustand der source state ist) oder eine leere Liste, falls dieser Zustand keine ausgehenden Übergänge hat.
Siehe auch „ addTransition()“.
© 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.