StateMachine QML Type

階層的有限状態機械を提供する。詳細...

Import Statement: import QtQml.StateMachine 6.8
Inherits:

State

プロパティ

信号

方法

詳細説明

StateMachineはStatechartsの概念と記法に基づいている。StateMachine はQt State Machine QML API の一部です

ステートマシンは状態の集合と状態間の遷移を管理する。ステートグラフが構築されると、ステートマシンはそれを実行することができます。StateMachineの実行アルゴリズムは、State Chart XML(SCXML)アルゴリズムに基づいている。フレームワークの概要には、いくつかのステート・グラフと、それらを構築するためのコードが示されている。

マシンを起動する前に、initialState 。初期状態は、起動時にマシンが入る状態である。その後、runningプロパティをtrueに設定するか、start ()ステートマシンを設定することができる。初期状態に入ると、startedシグナルが発せられる。

ステートマシンは、イベントを処理し、トップレベルの最終状態になるまで遷移を行います。ステートマシンを明示的に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.RestoreProperties ステートマシンは、プロパティの初期値を保存し、後で復元する必要があります。

running : bool

このステートマシンの実行状態。

start() およびstop()も参照してください


シグナル・ドキュメント

started()

このシグナルは、ステートマシンが初期状態 (State::initialState) になったときに発せられる。

注: 対応するハンドラはonStarted

runningstart()、State::finishedも参照


stopped()

このシグナルは、ステートマシンが停止したときに発せられる。

注: 対応するハンドラはonStopped

runningstop()、State::finishedも参照


メソッド・ドキュメント

start()

このステートマシンを開始する。マシンは構成をリセットし、初期状態に遷移する。最終的なトップレベル状態(FinalState)に入ると、マシンはfinished() シグナルを発する。

注: QCoreApplication::exec() やQApplication::exec() で開始されるメイン・アプリケーション・イベント・ループなど、実行中のイ ベント・ループがないと、ステート・マシンは実行されません。

startedState::finishedstop()、State::initialStaterunningも参照してください


stop()

このステート・マシンを停止します。ステートマシンはイベントの処理を停止し、stoppedシグナルを発信します。

stoppedstart()、running参照


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