QState Class

Die Klasse QState bietet einen Allzweckzustand für QStateMachine. Mehr...

Kopfzeile: #include <QState>
CMake: find_package(Qt6 REQUIRED COMPONENTS StateMachine)
target_link_libraries(mytarget PRIVATE Qt6::StateMachine)
qmake: QT += statemachine
Vererbt: QAbstractState
Vererbt von:

QStateMachine

Öffentliche Typen

enum ChildMode { ExclusiveStates, ParallelStates }
enum RestorePolicy { DontRestoreProperties, RestoreProperties }

Eigenschaften

Ö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

Reimplementierte 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() wird für die Definition von Eigenschaftszuweisungen verwendet, die beim Eintritt in einen Zustand ausgeführt werden sollen.

Zustände der obersten Ebene müssen ein QStateMachine Objekt als übergeordneten Zustand erhalten oder mit QStateMachine::addState() zu einem Zustandsautomaten hinzugefügt werden.

Zustände mit Unterzuständen

Die Eigenschaft childMode bestimmt, wie Unterzustände behandelt werden. Bei nicht parallelen Zustandsgruppen muss die Funktion setInitialState() aufgerufen werden, um den Anfangszustand zu setzen. Die Unterzustände sind einander ausschließende Zustände, und der Zustandsautomat muss wissen, in welchen Unterzustand er eintreten muss, wenn der übergeordnete Zustand das Ziel eines Übergangs ist.

Der Zustand gibt das Signal QState::finished() aus, wenn ein endgültiger Unterzustand (QFinalState) erreicht wird.

Das Signal setErrorState() setzt den Fehlerzustand des Zustands. Der Fehlerzustand ist der Zustand, in den der Zustandsautomat übergeht, wenn beim Versuch, in den Zustand einzutreten, ein Fehler festgestellt wird (z. B. weil kein Anfangszustand gesetzt wurde).

Dokumentation der Mitgliedstypen

enum QState::ChildMode

Diese Aufzählung gibt an, wie die untergeordneten Zustände eines Zustands behandelt werden.

KonstanteWertBeschreibung
QState::ExclusiveStates0Die Kindzustände schließen sich gegenseitig aus und ein Anfangszustand muss durch den Aufruf von QState::setInitialState() gesetzt werden.
QState::ParallelStates1Die Unterzustände sind parallel. Beim Eintritt in den übergeordneten Zustand werden alle untergeordneten Zustände parallel aktiviert.

enum QState::RestorePolicy

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 RestoreProperties gesetzt ist, speichert der Automat den ursprünglichen Wert der Eigenschaft, bevor der neue Wert gesetzt wird.

Wenn der Automat später in einen Zustand eintritt, in dem für die betreffende Eigenschaft kein Wert festgelegt ist, wird die Eigenschaft automatisch auf ihren Ausgangswert 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 erst überschrieben, wenn die Eigenschaft erfolgreich wiederhergestellt wurde.

KonstanteWertBeschreibung
QState::DontRestoreProperties0Der Zustandsautomat sollte die Anfangswerte von Eigenschaften nicht speichern und sie später wiederherstellen.
QState::RestoreProperties1Der Zustandsautomat sollte die Anfangswerte von Eigenschaften speichern und später wiederherstellen.

Siehe auch QStateMachine::globalRestorePolicy und QState::assignProperty().

Dokumentation der Eigenschaften

[bindable] childMode : ChildMode

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält den Child-Modus dieses Status

Der Standardwert für diese Eigenschaft ist QState::ExclusiveStates.

[bindable] errorState : QAbstractState*

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält den Fehlerstatus dieses Zustands

[bindable] initialState : QAbstractState*

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält den Anfangszustand dieses Zustands (einer seiner untergeordneten Zustände)

Dokumentation der Mitgliedsfunktionen

QState::QState(QState *parent = nullptr)

Konstruiert einen neuen Zustand mit dem angegebenen parent Zustand.

QState::QState(QState::ChildMode childMode, QState *parent = nullptr)

Konstruiert einen neuen Zustand mit dem angegebenen childMode und dem angegebenen parent Zustand.

[virtual noexcept] QState::~QState()

Zerstört diesen Zustand.

QAbstractTransition *QState::addTransition(QAbstractState *target)

Fügt einen unbedingten Übergang von diesem Zustand zum angegebenen Zustand target hinzu und gibt ein neues Übergangsobjekt zurück.

void QState::addTransition(QAbstractTransition *transition)

Fügt den angegebenen transition hinzu. Der Übergang hat diesen Zustand als Quelle. 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 verbunden ist, und gibt das neue QSignalTransition Objekt zurück. Der Übergang hat diesen Zustand als Quelle und den angegebenen target als Zielzustand.

template <typename PointerToMemberFunction> QSignalTransition *QState::addTransition(const QObject *sender, PointerToMemberFunction signal, QAbstractState *target)

Dies ist eine überladene Funktion.

Fügt einen Übergang hinzu, der mit dem angegebenen signal des angegebenen sender Objekts verbunden ist, und gibt das neue QSignalTransition Objekt zurück. Der Übergang hat diesen Zustand als Quelle und den angegebenen target als Zielzustand.

void QState::assignProperty(QObject *object, const char *name, const QVariant &value)

Weist diesen Zustand an, die Eigenschaft mit dem angegebenen name des angegebenen object auf den angegebenen value zu setzen, wenn der Zustand betreten wird.

Siehe auch propertiesAssigned().

QState::ChildMode QState::childMode() const

Gibt den Child-Modus dieses Zustands zurück.

Hinweis: Getter-Funktion für die Eigenschaft childMode.

Siehe auch setChildMode().

[private signal] void QState::childModeChanged()

Dieses Signal wird ausgesendet, wenn die Eigenschaft childMode geändert wird.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann aber nicht vom Benutzer ausgegeben werden.

Hinweis: Benachrichtigungssignal 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 ausgesendet, wenn die Eigenschaft errorState geändert wird.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann aber nicht vom Benutzer ausgegeben werden.

Hinweis: Benachrichtigungssignal für die Eigenschaft errorState.

Siehe auch QState::errorState.

[override virtual protected] bool QState::event(QEvent *e)

Reimplements: QAbstractState::event(QEvent *e).

[private signal] void QState::finished()

Dieses Signal wird ausgegeben, wenn ein letzter untergeordneter Zustand dieses Zustands erreicht wird.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann aber nicht vom Benutzer ausgegeben werden.

Siehe auch QFinalState.

QAbstractState *QState::initialState() const

Gibt den Anfangszustand dieses Zustands zurück, oder nullptr, wenn der Zustand keinen Anfangszustand hat.

Hinweis: Getter-Funktion für die Eigenschaft initialState.

Siehe auch setInitialState().

[private signal] void QState::initialStateChanged()

Dieses Signal wird ausgesendet, wenn die Eigenschaft initialState geändert wird.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann aber nicht vom Benutzer ausgegeben werden.

Hinweis: Benachrichtigungssignal für die Eigenschaft initialState.

Siehe auch QState::initialState.

[override virtual protected] void QState::onEntry(QEvent *event)

Reimplements: QAbstractState::onEntry(QEvent *Event).

[override virtual protected] void QState::onExit(QEvent *event)

Reimplements: QAbstractState::onExit(QEvent *Event).

[private signal] void QState::propertiesAssigned()

Dieses Signal wird ausgelöst, wenn alle Eigenschaften ihren endgültigen Wert erhalten haben. Wenn der Zustand einer oder mehreren Eigenschaften einen Wert zuweist, für die eine Animation existiert (entweder beim Übergang festgelegt oder als Standardanimation im Zustandsautomaten), dann wird das Signal erst ausgegeben, wenn alle diese Animationen abgespielt wurden.

Wenn es keine relevanten Animationen gibt oder keine Eigenschaftszuweisungen für den Zustand definiert sind, wird das Signal unmittelbar vor dem Eintritt in den Zustand ausgegeben.

Siehe auch QState::assignProperty() und QAbstractTransition::addAnimation()

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann aber nicht vom Benutzer ausgegeben werden.

void QState::removeTransition(QAbstractTransition *transition)

Entfernt die angegebene transition aus diesem Zustand. Der Zustand gibt das Eigentum an dem Übergang frei.

Siehe auch addTransition().

void QState::setChildMode(QState::ChildMode mode)

Setzt das Kind mode dieses Zustands.

Hinweis: Setter-Funktion für die Eigenschaft childMode.

Siehe auch childMode().

void QState::setErrorState(QAbstractState *state)

Setzt den Fehlerstatus dieses Zustands auf den angegebenen state. Ist der Fehlerstatus nicht gesetzt oder ist er auf nullptr gesetzt, erbt der Zustand rekursiv den Fehlerstatus seiner Vorfahren. Wenn für den Zustand selbst oder einen seiner Vorfahren kein Fehlerstatus gesetzt ist, führt ein Fehler dazu, dass die Ausführung der Maschine gestoppt und ein Fehler auf der Konsole ausgegeben wird.

Hinweis: Setter-Funktion für die Eigenschaft errorState.

Siehe auch errorState().

void QState::setInitialState(QAbstractState *state)

Setzt den Anfangszustand dieses Zustands auf den angegebenen state. state muss ein Kind 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, wenn dieser Zustand keine ausgehenden Übergänge hat.

Siehe auch addTransition().

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