SCXML 計算機

SCXML 仕様書に示された Calculator の例を実装したアプリケーションです。

Calculator はQt SCXML を使用して SCXML 仕様書に示されたCalculator の例を実装しています。

ステートマシンはstatemachine.scxmlファイルで指定され、CalculatorStateMachine クラスにコンパイルされます。ユーザインタフェースは Qt Quick を使用して作成されます。

例の実行

Qt Creator からサンプルを実行するには、Welcome モードを開き、Examples からサンプルを選択します。詳細については、Building and Running an Example を参照してください。

ステートマシンのインスタンス化

calculator-qml.hファイルでQML型として宣言することで、生成されたCalculatorStateMachine クラスをQMLで利用できるようにします:

struct CalculatorStateMachineRegistration
{
    Q_GADGET
    QML_FOREIGN(CalculatorStateMachine)
    QML_NAMED_ELEMENT(CalculatorStateMachine)
    QML_ADDED_IN_VERSION(1, 0)
};

CalculatorStateMachineをインスタンス化し、updateDisplay イベントをリッスンします。このイベントが発生すると、電卓ディスプレイのテキストを変更します:

    CalculatorStateMachine {
        id: statemachine
        running: true
        EventConnection {
            events: ["updateDisplay"]
            onOccurred: (event)=> resultText.text = event.data.display
        }
    }

ユーザーが電卓のボタンを押すと、ボタンがステートマシンにイベントを送信します:

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

プロジェクト例 @ code.qt.io

©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。