QState Class
QState 클래스는 ` QStateMachine`에 대한 범용 상태를 제공합니다. 더 보기...
| 헤더: | #include <QState> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS StateMachine) target_link_libraries(mytarget PRIVATE Qt6::StateMachine) |
| qmake: | QT += statemachine |
| 상속: | QAbstractState |
| 상속받는 클래스: |
공개 유형
| 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 프레임워크의 일부입니다.
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
이 열거형은 복원 정책 유형을 지정합니다. 복원 정책은 머신이 하나 이상의 속성을 설정하는 상태로 진입할 때 적용됩니다. 복원 정책이 RestoreProperties로 설정된 경우, 상태 머신은 새 값이 설정되기 전에 해당 속성의 원래 값을 저장합니다.
나중에 머신이 해당 속성에 대한 값을 설정하지 않는 상태로 진입하면, 속성은 자동으로 초기 값으로 복원됩니다.
주어진 속성당 하나의 초기 값만 저장됩니다. 상태 머신에 의해 속성의 값이 이미 저장된 경우, 해당 속성이 성공적으로 복원될 때까지 값이 덮어쓰이지 않습니다.
| 상수 | 값 | 설명 |
|---|---|---|
QState::DontRestoreProperties | 0 | 상태 머신은 속성의 초기값을 저장했다가 나중에 복원해서는 안 됩니다. |
QState::RestoreProperties | 1 | 상태 머신은 속성의 초기값을 저장했다가 나중에 복원해야 합니다. |
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 바인딩을 지원합니다.
이 속성은 이 상태(자식 상태 중 하나)의 초기 상태를 포함합니다.
액세스 함수:
| 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()
이 신호는 모든 속성에 최종 값이 할당되었을 때 발생합니다. 해당 상태에서 애니메이션이 설정된 하나 이상의 속성(전환 시 설정되었거나 상태 머신의 기본 애니메이션으로 설정된 경우)에 값이 할당된 경우, 해당 애니메이션이 모두 재생이 완료될 때까지 이 신호는 발생하지 않습니다.
관련된 애니메이션이 없거나, 해당 상태에 정의된 속성 할당이 없는 경우, 이 신호는 상태로 진입하기 직전에 발송됩니다.
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.