Qt SCXML 概要

Qt SCXML モジュールは、SCXML(State Chart XML)ファイルから作成されたステートマシンを Qt アプリケーションに埋め込むためのクラスを提供します。SCXML ファイルは、SCXML Compliance で説明されている制限や拡張を除き、SCXML 仕様に準拠していれば、テキストエディタやシミュレータなどの適切なツールを使用して作成することができます。

アプリケーションロジックの一部をカプセル化された SCXML ファイルに置き換えることができます。このため、Qt Quick またはQt Widgets を使用することで、アプリケーションロジックとユーザインタフェースの実装を明確に分けることができます。

Qt SCXML モジュールはステートマシン フレームワークのQt State Machineモジュールは、Qt SCXML適合した SCXML ドキュメントを解析して処理できる適合プロセッサを提供する点で異なります。Qt SCXML では、ステートマシンは別々の SCXML ファイルから読み込まれ、QScxmlStateMachine クラスをインスタンス化して SCXML ファイルを動的に読み込むか、Qt SCXML コンパイラを使用してQScxmlStateMachine のサブクラスを生成してインスタンス化することによって Qt アプリケーションに統合されます。SCXML ドキュメントとの通信は、QScxmlStateMachine クラスのシグナルとメソッドによって行われます。

基本的なステートマシンの概念であるステートトランジションイベントは、SCXML仕様の概念に基づいています。ステートチャートは、システムが刺激にどのように反応するかをモデル化するグラフィカルな方法を提供します。これは、システムが取り得る状態と、システムがある状態から別の状態に移行する方法(状態間の遷移)を定義することによって行われます。イベント駆動型システム(Qtアプリケーションなど)の主な特徴は、動作がしばしば最後のイベントや現在のイベントだけでなく、それ以前のイベントにも依存することです。ステートチャートを使えば、この情報を簡単に表現することができます。

Qt SCXML 例えば、状態間の遷移をシグナルによってトリガーしたり、 のプロパティを設定したりメソッドを呼び出したりするように状態を設定することができます。Qtのイベントシステムは、ステートマシンの駆動に使用されます。QObjects

Qt SCXML のステートグラフは階層構造になっている。ステートマシンの現在の構成は、現在アクティブなステートのセットで構成される。

データ・モデル

Qt SCXML はNULLデータモデルをサポートしており、これはSCXMLプロセッサがサポートしなければならない。さらに、 は、 クラスによって実装される独自の C++ データモデルを提供します。このクラスは、Qt SCXML QScxmlCppDataModel expr属性と 要素のためのC++コードを書くことを可能にします。データ・モデルの<script> データ部分は、 のサブクラスによってサポートされており、 コンパイラがディスパッチ・メソッドを生成します。QScxmlCppDataModel Qt SCXML

Qt SCXML コンパイラ

Qt SCXML コンパイラqscxmlc は .scxml ファイルを読み込み、SCXML で定義されたステートマシンを実装するクラスを含む C++ ソースファイルとヘッダファイルを生成します。コンパイラの使用法の詳細については、 Qt SCXML コンパイラ (qscxmlc) の使用法を参照してください。

動的に作成されたステートマシンもコンパイルされたステートマシンも同じように動作し、同じプロパティ、ステート、データモデルなどを持ちます。インスタンス化の方法が異なるだけです。詳細については、ステートマシンのインスタンス化とQt SCXML 例を参照してください。

ロギング・カテゴリー

Qt SCXML モジュールは以下のロギング・カテゴリーをエクスポートする:

ロギング・カテゴリー説明
qscxmlLogQt SCXML モジュールのログを有効にする
scxmlLogSCXML ドキュメントのログを有効にする

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