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