Qt State Machine Übersicht
Das State Machine Framework bietet Klassen zum Erstellen und Ausführen von Zustandsgraphen. Die Konzepte und die Notation basieren auf denen von Harels Statecharts: Ein visueller Formalismus für komplexe Systeme, der auch die Grundlage der UML-Zustandsdiagramme bildet. Die Semantik der Ausführung von Zustandsautomaten basiert auf State Chart XML (SCXML).
Zustandsdiagramme bieten eine grafische Möglichkeit zur Modellierung der Reaktion eines Systems auf Stimuli. Dies geschieht durch die Definition der möglichen Zustände, die das System einnehmen kann, und der Art und Weise, wie das System von einem Zustand in einen anderen übergehen kann(Übergänge zwischen Zuständen). Ein Hauptmerkmal von ereignisgesteuerten Systemen (wie Qt-Anwendungen) ist, dass das Verhalten oft nicht nur vom letzten oder aktuellen Ereignis abhängt, sondern auch von den Ereignissen, die diesem vorausgegangen sind. Mit Zustandsdiagrammen lässt sich diese Information leicht ausdrücken.
Das State Machine-Framework bietet eine API und ein Ausführungsmodell, mit denen sich die Elemente und die Semantik von Statecharts effektiv in Qt-Anwendungen einbetten lassen. Das Framework ist eng mit dem Meta-Objektsystem 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}s aufrufen. Das Ereignissystem von Qt wird zur Steuerung der Zustandsautomaten verwendet.
Der Zustandsgraph im State Machine Framework ist hierarchisch aufgebaut. Zustände können innerhalb anderer Zustände verschachtelt werden, und die aktuelle Konfiguration des Zustandsautomaten besteht aus der Menge der Zustände, die gerade aktiv sind. Alle Zustände in einer gültigen Konfiguration des Zustandsautomaten haben einen gemeinsamen Vorfahren.
Siehe auch Qt State Machine C++ Guide, Qt State Machine QML Guide, und Qt SCXML Overview.
© 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.