SCXML-Rechner
Eine Anwendung, die das in der SCXML-Spezifikation vorgestellte Rechner-Beispiel implementiert.

„Calculator“ nutzt „ Qt SCXML “, um das in der SCXML-Spezifikation vorgestellte „Calculator“-Beispiel zu implementieren.
Die Zustandsmaschine ist in der Datei „statemachine.scxml“ definiert und in die Klasse „ CalculatorStateMachine “ kompiliert. Die Benutzeroberfläche wird mithilfe von „ Qt Quick “ erstellt.
Ausführen des Beispiels
Sie können das Beispiel wie folgt ausführen:
- Qt Creator
Öffnen Sie den Modus „ Welcome “ und wählen Sie das Beispiel unter Examples aus. Weitere Informationen finden Sie unter Qt Creator: Tutorial: Erstellen und Ausführen.
- Qt Extension for Visual Studio Code
Führen Sie den Befehl „ Qt: Open Qt examples “ aus dem Verzeichnis „ Command Palette “ aus und wählen Sie das Beispiel aus der Liste aus. Weitere Informationen finden Sie unter Qt Extension for Visual Studio Code: Tutorial: Erstellen und Ausführen.
Instanziieren der Zustandsmaschine
Wir stellen die generierte Klasse „ CalculatorStateMachine “ für QML zur Verfügung, indem wir sie in der Datei „calculator-qml.h“ als QML-Typ deklarieren:
struct CalculatorStateMachineRegistration
{
Q_GADGET
QML_FOREIGN(CalculatorStateMachine)
QML_NAMED_ELEMENT(CalculatorStateMachine)
QML_ADDED_IN_VERSION(1, 0)
};Wir instanziieren eine `CalculatorStateMachine` und überwachen das Ereignis ` updateDisplay `. Wenn dieses Ereignis eintritt, ändern wir den Text auf dem Display des Taschenrechners:
CalculatorStateMachine {
id: statemachine
running: true
EventConnection {
events: ["updateDisplay"]
onOccurred: (event)=> resultText.text = event.data.display
}
}Wenn Benutzer die Tasten des Taschenrechners drücken, senden die Tasten Ereignisse an die Zustandsmaschine:
Button {
id: resultButton
x: 3 * width
y: parent.height / 5
textHeight: y - 2
fontHeight: 0.4
width: parent.width / 4
height: y * 4
color: pressed ? "#e0b91c" : "#face20"
text: "="
onClicked: statemachine.submitEvent("EQUALS")
}© 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.