Auf dieser Seite

SCXML-Rechner

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

Taschenrechner mit numerischer Anzeige, Rechenoperatoren-Tasten und Zifferntasten

„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:

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")
        }

Beispielprojekt @ code.qt.io

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