QState Class
QStateクラスは、QStateMachine のための汎用ステートを提供します。詳細...
Header: | #include <QState> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS StateMachine) target_link_libraries(mytarget PRIVATE Qt6::StateMachine) |
qmake: | QT += statemachine |
Inherits: | QAbstractState |
Inherited By: |
パブリック・タイプ
enum | ChildMode { ExclusiveStates, ParallelStates } |
enum | RestorePolicy { DontRestoreProperties, RestoreProperties } |
プロパティ
- childMode : ChildMode
- errorState : QAbstractState*
- initialState : QAbstractState*
パブリック関数
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 |
シグナル
void | childModeChanged() |
void | errorStateChanged() |
void | finished() |
void | initialStateChanged() |
void | propertiesAssigned() |
再実装された保護された関数
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::ExclusiveStates | 0 | 子状態は相互に排他的であり、初期状態はQState::setInitialState() を呼び出すことによって設定されなければならない。 |
QState::ParallelStates | 1 | 子状態は並列である。親状態が入力されると、すべての子状態が並列に入力される。 |
enum QState::RestorePolicy
この列挙型は、リストアポリシーのタイプを指定する。マシンが1つ以上のプロパティを設定する状態に入ると、リストアポリシーが有効になる。リストアポリシーがRestorePropertiesに設定されている場合、ステートマシンは、新しい値が設定される前に、プロパティの元の値を保存する。
その後、マシンが指定されたプロパティの値を設定しない状態に入ると、プロパティは自動的に初期値に復元される。
与えられたプロパティに対して保存される初期値は1つだけである。あるプロパティの値がステートマシンによって既に保存されている場合、プロパティが正常に復元されるまで、その値は上書きされない。
定数 | 値 | 説明 |
---|---|---|
QState::DontRestoreProperties | 0 | ステートマシンは、プロパティの初期値を保存せず、後で復元すべきである。 |
QState::RestoreProperties | 1 | ステートマシンは、プロパティの初期値を保存し、後で復元すべきである。 |
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()も参照してください 。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。