Auf dieser Seite

Qt SCXML Übersicht

Das Modul „ Qt SCXML “ stellt Klassen zur Verfügung, mit denen aus State-Chart-XML-Dateien (SCXML) erstellte Zustandsmaschinen in Qt-Anwendungen eingebettet werden können. Die SCXML-Dateien können mit jedem geeigneten Tool, wie beispielsweise einem Texteditor oder einem Simulator, erstellt werden, sofern sie der SCXML-Spezifikation entsprechen und die unter „SCXML-Konformität“ beschriebenen Einschränkungen und Erweiterungen berücksichtigen.

Teile der Anwendungslogik können durch eine gekapselte SCXML-Datei ersetzt werden. Dies ermöglicht eine klare Trennung zwischen der Anwendungslogik und der Implementierung der Benutzeroberfläche durch die Verwendung von „ Qt Quick “ oder „ Qt Widgets “.

Das Modul „ Qt SCXML “ unterscheidet sich vom State-Machine-Framework insofern, als Qt State Machine Modul „ Qt SCXML “ dadurch, dass „ “ einen konformen Prozessor bereitstellt, der konforme SCXML-Dokumente analysieren und verarbeiten kann. In „ Qt SCXML “ werden Zustandsmaschinen aus separaten SCXML-Dateien gelesen und in Qt-Anwendungen integriert, indem die Klasse „ QScxmlStateMachine “ instanziiert und eine SCXML-Datei dynamisch geladen wird oder indem der „ Qt SCXML “-Compiler verwendet wird, um eine Unterklasse von „ QScxmlStateMachine “ zu generieren, die anschließend instanziiert wird. Die Kommunikation mit dem SCXML-Dokument erfolgt über die Signale und Methoden der Klasse „ QScxmlStateMachine “.

Die grundlegenden Konzepte der Zustandsmaschine – Zustand, Übergang und Ereignis – basieren auf denen der SCXML-Spezifikation. Zustandsdiagramme bieten eine grafische Möglichkeit, die Reaktion eines Systems auf Reize zu modellieren. Dies geschieht durch die Definition der möglichen Zustände, in denen sich das System befinden kann, sowie der Art und Weise, wie das System von einem Zustand in einen anderen übergehen kann (Zustandsübergänge). Ein wesentliches Merkmal ereignisgesteuerter Systeme (wie z. B. 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.

Qt SCXML 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 QObjects aufrufen. Das Ereignissystem von Qt wird zur Steuerung der Zustandsmaschinen verwendet.

Der Zustandsgraph in Qt SCXML 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.

Datenmodelle

Qt SCXML unterstützt das Null-Datenmodell, das von konformen SCXML-Prozessoren unterstützt werden muss, sowie das ECMAScript-Datenmodell. Darüber hinaus stellt Qt SCXML ein eigenes C++-Datenmodell bereit, das durch die Klasse „ QScxmlCppDataModel “ implementiert wird. Die Klasse ermöglicht das Schreiben von C++-Code für „expr“-Attribute und „ <script> “-Elemente. Der Datenteil des Datenmodells wird durch eine Unterklasse von „ QScxmlCppDataModel “ unterstützt, für die der „ Qt SCXML “-Compiler die Dispatch-Methoden generiert.

Qt SCXML Compiler

Der „ Qt SCXML “-Compiler ( qscxmlc) liest eine .scxml-Datei ein und erzeugt C++-Quell- und Header-Dateien, die eine Klasse enthalten, welche eine in SCXML definierte Zustandsmaschine implementiert. Weitere Informationen zur Verwendung des Compilers finden Sie unter „Verwenden des Qt SCXML -Compilers (qscxmlc)“.

Sowohl die dynamisch erstellten als auch die kompilierten Zustandsmaschinen verhalten sich auf dieselbe Weise, verfügen über dieselben Eigenschaften, Zustände, dasselbe Datenmodell usw. Sie unterscheiden sich lediglich in der Art und Weise, wie sie instanziiert werden. Weitere Informationen finden Sie unter „Instanziieren von Zustandsmaschinen“ und „Qt SCXML -Beispiele“.

Protokollierungskategorien

Das Modul „ Qt SCXML “ exportiert die folgenden Protokollierungskategorien:

ProtokollierungskategorieBeschreibung
qscxmlLogAktiviert das Protokoll des Moduls „ Qt SCXML “
scxmlLogAktiviert die Protokollierung von SCXML-Dokumenten

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