このページでは

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 フレームワークの一部です。

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` です。

アクセス関数:

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

Notifierシグナル:

void childModeChanged()[see note below]

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

[bindable] errorState : QAbstractState*

注:この プロパティは、QProperty バインディングに対応しています。

このプロパティには、この状態のエラー状態が格納されます

アクセス関数:

QAbstractState *errorState() const
void setErrorState(QAbstractState *state)

通知シグナル:

void errorStateChanged()[see note below]

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

[bindable] initialState : QAbstractState*

注:この プロパティは、QProperty バインディングに対応しています。

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

アクセス関数:

QAbstractState *initialState() const
void setInitialState(QAbstractState *state)

通知シグナル:

void initialStateChanged()[see note below]

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

メンバ関数のドキュメント

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()も参照してください 。

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