Qt State Machine Übersicht

Das State-Machine-Framework stellt Klassen zum Erstellen und Ausführen von Zustandsgraphen bereit. Die Konzepte und die Notation basieren auf denen aus Harels „Statecharts: A visual formalism for complex systems“, das auch die Grundlage für UML-Zustandsdiagramme bildet. Die Semantik der Ausführung von Zustandsmaschinen basiert auf State Chart XML (SCXML).

Zustandsdiagramme bieten eine grafische Möglichkeit, die Reaktion eines Systems auf Reize zu modellieren. Dazu werden die möglichen Zustände definiert, in denen sich das System befinden kann, sowie die Art und Weise, wie das System von einem Zustand in einen anderen übergehen kann (Übergänge zwischen Zuständen). Ein wesentliches Merkmal ereignisgesteuerter Systeme (wie beispielsweise Qt-Anwendungen) ist, dass das Verhalten oft nicht nur vom letzten oder aktuellen Ereignis abhängt, sondern auch von den Ereignissen, die diesem vorausgingen. Mit Zustandsdiagrammen lassen sich diese Informationen leicht darstellen.

Das Qt State Machine-Framework bietet eine API und ein Ausführungsmodell, mit denen sich die Elemente und die Semantik von Zustandsdiagrammen effektiv in Qt-Anwendungen einbinden lassen. Das Framework ist eng in das Metaobjektsystem von Qt integriert; so können beispielsweise Übergänge zwischen Zuständen durch Signale ausgelöst werden, und Zustände können so konfiguriert werden, dass sie Eigenschaften setzen und Methoden auf {QObject} aufrufen. Das Ereignissystem von Qt wird zur Steuerung der Zustandsmaschinen verwendet.

Der Zustandsgraph im State-Machine-Framework ist hierarchisch aufgebaut. Zustände können in anderen Zuständen verschachtelt sein, und die aktuelle Konfiguration der Zustandsmaschine besteht aus der Menge der derzeit aktiven Zustände. Alle Zustände in einer gültigen Konfiguration der Zustandsmaschine haben einen gemeinsamen Vorfahren.

Siehe auch „Qt State Machine C++ Guide“, „Qt State Machine QML Guide“ und „Qt SCXML Overview“.

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