QState Class

QStateクラスは、QStateMachine のための汎用ステートを提供します。さらに...

ヘッダー #include <QState>
CMake: find_package(Qt6 REQUIRED COMPONENTS StateMachine)
target_link_libraries(mytarget PRIVATE Qt6::StateMachine)
qmake: QT += statemachine
を継承する: QAbstractState
継承元:

QStateMachine

パブリックな型

enum ChildMode { ExclusiveStates, ParallelStates }
enum RestorePolicy { DontRestoreProperties, RestoreProperties }

プロパティ

パブリック機能

QState(QState *parent = nullptr)
QState(QState::ChildMode childMode, QState *parent = nullptr)
virtual ~QState()
QAbstractTransition *addTransition(QAbstractState *target)
void addTransition(QAbstractTransition *transition)
QSignalTransition *addTransition(const QObject *sender, const char *signal, QAbstractState *target)
QSignalTransition *addTransition(const QObject *sender, PointerToMemberFunction signal, QAbstractState *target)
void assignProperty(QObject *object, const char *name, const QVariant &value)
QBindable<QState::ChildMode> bindableChildMode()
QBindable<QAbstractState *> bindableErrorState()
QBindable<QAbstractState *> bindableInitialState()
QState::ChildMode childMode() const
QAbstractState *errorState() const
QAbstractState *initialState() const
void removeTransition(QAbstractTransition *transition)
void setChildMode(QState::ChildMode mode)
void setErrorState(QAbstractState *state)
void setInitialState(QAbstractState *state)
QList<QAbstractTransition *> transitions() const

シグナル

再実装された保護された関数

virtual bool event(QEvent *e) override
virtual void onEntry(QEvent *event) override
virtual void onExit(QEvent *event) override

詳細説明

QStateオブジェクトは子状態を持つことができ、他の状態への遷移を持つことができる。QStateはQt State Machine Frameworkの一部です。

addTransition() 関数は遷移を追加する。removeTransition() 関数は遷移を削除します。transitions() 関数は、状態の遷移を返します。

assignProperty() 関数は、ステートに入ったときに実行されるプロパティの割り当てを定義するために使用されます。

トップレベルの状態は、親状態としてQStateMachine オブジェクトを渡すか、QStateMachine::addState() を使用してステートマシンに追加する必要があります。

子ステートを持つステート

childMode プロパティは、子ステートの扱い方を決定します。非平行ステート・グループの場合、setInitialState ()関数を呼び出して初期ステートを設定する必要があります。子状態は互いに排他的な状態であり、ステートマシンは親状態が遷移のターゲットである場合にどの子状態に入るかを知る必要がある。

状態は、最終的な子状態(QFinalState )に入ると、QState::finished ()シグナルを発する。

setErrorState() はステートのエラー状態を設定する。エラー状態とは、(初期状態が設定されていないなどの理由で)状態に入ろうとしたときにエラーが検出された場合に、ステートマシンが遷移する状態のことである。

メンバ型ドキュメント

enum QState::ChildMode

この列挙型は、ステートの子ステートがどのように扱われるかを指定する。

定数説明
QState::ExclusiveStates0子状態は相互に排他的であり、QState::setInitialState() を呼び出して初期状態を設定しなければならない。
QState::ParallelStates1子状態は並列である。親状態が入力されると、すべての子状態が並行して入力される。

enum QState::RestorePolicy

この列挙型は、リストアポリシーのタイプを指定する。リストアポリシーは、マシンが1つ以上のプロパティを設定する状態に入ると有効になる。リストアポリシーが RestoreProperties に設定されている場合、ステートマシンは、新しい値が設定される前に、プロパティの元の値を保存する。

その後、マシンが指定されたプロパティの値を設定しない状態に入ると、プロパティは自動的に初期値に復元される。

与えられたプロパティに対して保存される初期値は1つだけである。あるプロパティの値がステートマシンによって既に保存されている場合、プロパティが正常に復元されるまで、その値は上書きされません。

定数説明
QState::DontRestoreProperties0ステートマシンは、プロパティの初期値を保存せず、後で復元すべきである。
QState::RestoreProperties1ステートマシンは、プロパティの初期値を保存し、後で復元すべきである。

QStateMachine::globalRestorePolicy およびQState::assignProperty()も参照

プロパティのドキュメント

[bindable] childMode : ChildMode

注: このプロパティは、QProperty バインディングをサポートしています。

このプロパティは、このステートの子モードを保持する。

このプロパティのデフォルト値はQState::ExclusiveStates です。

[bindable] errorState : QAbstractState*

注意: このプロパティは、QProperty バインディングをサポートしています。

このプロパティは、このステートのエラー状態を保持します。

[bindable] initialState : QAbstractState*

注: このプロパティは、QProperty バインディングをサポートしています。

このプロパティは、この状態(子状態の1つ)の初期状態を保持する。

メンバ関数ドキュメント

QState::QState(QState *parent = nullptr)

与えられたparent 状態で新しい状態を構築する。

QState::QState(QState::ChildMode childMode, QState *parent = nullptr)

与えられたchildMode と与えられたparent 状態で新しい状態を構築する。

[virtual noexcept] QState::~QState()

この状態を破壊する。

QAbstractTransition *QState::addTransition(QAbstractState *target)

この状態から与えられたtarget 状態への無条件遷移を追加し、新しい遷移オブジェクトを返します。

void QState::addTransition(QAbstractTransition *transition)

与えられたtransition を追加する。トランジションはこのステートをソースとする。このステートはトランジションのオーナーシップを持つ。

QSignalTransition *QState::addTransition(const QObject *sender, const char *signal, QAbstractState *target)

与えられたsender オブジェクトの与えられたsignal に関連付けられたトランジションを追加し、新しいQSignalTransition オブジェクトを返す。トランジションはこの状態をソースとし、与えられたtarget をターゲット状態とします。

template <typename PointerToMemberFunction> QSignalTransition *QState::addTransition(const QObject *sender, PointerToMemberFunction signal, QAbstractState *target)

これはオーバーロードされた関数である。

与えられたsender オブジェクトの与えられたsignal に関連付けられたトランジションを追加し、新しいQSignalTransition オブジェクトを返します。トランジションはこの状態をソースとし、与えられたtarget をターゲット状態とします。

void QState::assignProperty(QObject *object, const char *name, const QVariant &value)

状態が入力されたときに、与えられたobject の与えられたname を持つプロパティを、与えられたvalue に設定するようにこの状態に指示する。

propertiesAssigned()も参照

QState::ChildMode QState::childMode() const

この状態の子モードを返す。

注: プロパティ childMode のゲッター関数。

setChildMode()も参照

[private signal] void QState::childModeChanged()

このシグナルは、childMode プロパティが変更されたときに発行される。

注意: これはプライベートシグナルです。シグナル接続で使用することはできますが、ユーザーが発することはできません。

注: childMode プロパティのノーティファイアシグナル。

QState::childModeも参照のこと

QAbstractState *QState::errorState() const

この状態のエラー状態を返す。

メモ: errorState プロパティのゲッター関数。

setErrorState() およびQStateMachine::error()も参照

[private signal] void QState::errorStateChanged()

このシグナルは、errorState プロパティが変更されたときに発行される。

注意: これはプライベートシグナルです。シグナル接続で使用することはできますが、ユーザーが発することはできません。

注: errorState プロパティのノーティファイアシグナル。

QState::errorStateも参照のこと

[override virtual protected] bool QState::event(QEvent *e)

再インプリメント:QAbstractState::event(QEvent *e).

[private signal] void QState::finished()

このステートの最終的な子ステートに入ると、このシグナルが発せられる。

注意: これはプライベートシグナルです。シグナル接続で使用することはできますが、ユーザーが発することはできません。

QFinalStateも参照のこと

QAbstractState *QState::initialState() const

この状態の初期状態を返します。初期状態がない場合はnullptr を返します。

備考: initialStateプロパティのゲッター関数。

setInitialState()も参照

[private signal] void QState::initialStateChanged()

このシグナルは、initialState プロパティが変更されたときに発行される。

注意: これはプライベートシグナルです。シグナル接続で使用することはできますが、ユーザーが発することはできません。

注: initialState プロパティのノーティファイアシグナル。

QState::initialStateも参照のこと

[override virtual protected] void QState::onEntry(QEvent *event)

再実装:QAbstractState::onEntry(QEvent *event)。

[override virtual protected] void QState::onExit(QEvent *event)

再実装:QAbstractState::onExit(QEvent *event)。

[private signal] void QState::propertiesAssigned()

このシグナルは、すべてのプロパティに最終値が割り当てられたときに発行される。状態が、アニメーションが存在する1つ以上のプロパティに値を割り当てている場合(トランジションで設定されるか、ステートマシンのデフォルトのアニメーションとして設定される)、そのようなアニメーションがすべて再生し終わるまで、このシグナルは発せられない。

関連するアニメーションがない場合、またはステートに対してプロパティ割り当てが定義されていない場合、シグナルはステートに入る直前に発せられる。

QState::assignProperty() およびQAbstractTransition::addAnimation()も参照のこと。

注意: これはプライベートシグナルです。シグナル接続で使用することはできますが、ユーザーが発することはできません。

void QState::removeTransition(QAbstractTransition *transition)

与えられたtransition をこの状態から削除する。状態は遷移の所有権を解放します。

addTransition()も参照

void QState::setChildMode(QState::ChildMode mode)

この状態の子プロパティmode を設定する。

注: プロパティchildMode のセッター関数です。

childMode()も参照

void QState::setErrorState(QAbstractState *state)

このステートのエラー状態を、与えられたstate に設定する。エラー状態が設定されていない場合、またはエラー状態がnullptr に設定されている場合、状態はその親のエラー状態を再帰的に継承します。状態自身またはその祖先にエラー状態が設定されていない場合、エラーが発生するとマシンの実行が停止し、コンソールにエラーが出力されます。

注: プロパティerrorState のセッター関数です。

errorState()も参照

void QState::setInitialState(QAbstractState *state)

この状態の初期状態を、与えられたstate に設定する。state は、この状態の子でなければならない。

注: プロパティinitialState のセッター関数です。

initialState()も参照

QList<QAbstractTransition *> QState::transitions() const

このステートの送信遷移(つまり、このステートがsource state である遷移)、またはこのステートに送信遷移がない場合は空のリストを返します。

addTransition()も参照してください

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