StateMachine QML Type
階層型有限状態マシンを提供します。詳細...
| Import Statement: | import QtQml.StateMachine 6.12 |
| Inherits: |
プロパティ
- errorString : string
- globalRestorePolicy : enumeration
- running : bool
信号
方法
詳細な説明
StateMachineは、ステートチャートの概念と表記法に基づいています。StateMachineはQt State Machine のQML APIの一部です
ステートマシンは、一連の状態とそれらの状態間の遷移を管理します。これらの状態と遷移がステートグラフを定義します。ステートグラフが構築されると、ステートマシンはそれを実行できます。StateMachineの実行アルゴリズムは、ステートチャートXML(SCXML)アルゴリズムに基づいています。フレームワークの概要では、いくつかのステートグラフと、それらを構築するためのコードが紹介されています。
ステートマシンを起動するには、まずinitialState を設定する必要があります。初期状態とは、ステートマシンが起動時に移行する状態のことです。その後、runningプロパティをtrueに設定するか、start()を呼び出してステートマシンを起動できます。初期状態に移行すると、startedシグナルが発火します。
ステートマシンは、最上位の最終状態に入るまでイベントを処理し、遷移を繰り返します。その後、ステートマシンは finished() シグナルを発行します。また、ステートマシンを明示的に `stop()` することも可能です(running プロパティを false に設定することもできます)。この場合、stopped シグナルが発行されます。
使用例
以下のスニペットは、ボタンがクリックされたときに処理を終了するステートマシンを示しています:
import QtQuick
import QtQml.StateMachine as DSM
Rectangle {
Button {
anchors.fill: parent
id: button
text: "Finish state"
DSM.StateMachine {
id: stateMachine
initialState: state
running: true
DSM.State {
id: state
DSM.SignalTransition {
targetState: finalState
signal: button.clicked
}
}
DSM.FinalState {
id: finalState
}
onFinished: Qt.quit()
}
}
}エラーが発生した場合、ステートマシンはerrorState をチェックし、利用可能な場合はその状態に移行します。 エラー状態に入った後、`error()` を使用してエラーの種類を取得できます。エラー状態に入っても、ステートグラフの実行は停止しません。エラー状態に該当する状態がなければ、マシンの実行は停止し、コンソールにエラーメッセージが出力されます。
警告: StateMachineのchildModeをQState::ExclusiveStates 以外の値に設定すると 、ステートマシンが無効になり、不正な動作を引き起こす可能性があります。
関連項目: QAbstractState 、State 、SignalTransition 、TimeoutTransition 、HistoryState 、およびQt State Machine QMLガイド。
プロパティのドキュメント
errorString : string [read-only]
このステートマシンのエラーメッセージ。
globalRestorePolicy : enumeration
このステートマシンの状態に関する復元ポリシー。
このプロパティのデフォルト値は、QState.DontRestoreProperties です。
この列挙型は、復元ポリシーのタイプを指定します。復元ポリシーは、ステートマシンが 1 つ以上のプロパティを設定する状態に入ったときに有効になります。復元ポリシーがQState.RestoreProperties に設定されている場合、ステートマシンは新しい値が設定される前に、そのプロパティの元の値を保存します。
その後、マシンが指定されたプロパティの値を設定しない状態に入った場合、そのプロパティは自動的に初期値に復元されます。
特定のプロパティに対して保存される初期値は1つだけです。プロパティの値がすでにステートマシンによって保存されている場合、そのプロパティが正常に復元されるまでは上書きされません。
- QState.DontRestoreProperties ステートマシンは、プロパティの初期値を保存したり、後で復元したりしてはなりません。
- QState.DontRestoreProperties ステートマシンは、プロパティの初期値を保存したり、後で復元したりしてはなりません。.RestoreProperties ステートマシンは、プロパティの初期値を保存し、後で復元する必要があります。
running : bool
このステートマシンの実行状態。
シグナルのドキュメント
started()
このシグナルは、ステートマシンが初期状態(State::initialState )に入ったときに発せられます。
注: 対応するハンドラは onStarted です。
関連項目: running 、start()、およびState::finished 。
stopped()
このシグナルは、ステートマシンが停止したときに発信されます。
注: 対応するハンドラは onStopped です。
関連項目: running 、stop()、およびState::finished 。
メソッドのドキュメント
void start()
このステートマシンを起動します。マシンは設定をリセットし、初期状態に移行します。最終的なトップレベル状態(FinalState )に入ると、マシンはfinished()シグナルを発行します。
注: QCoreApplication::exec() やQApplication::exec() で開始されるメインアプリケーションのイベントループなど、実行中のイベントループがない場合、ステートマシンは 動作しません。
関連項目: started 、State::finished 、stop()、State::initialState 、およびrunning 。
void stop()
このステートマシンを停止します。ステートマシンはイベントの処理を停止し、その後「stopped」シグナルを発行します。
© 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.