Класс QState
Класс QState предоставляет универсальное состояние для QStateMachine. Подробнее...
| Заголовок: | #include <QState> |
| CMake: | find_package(Qt6 COMPONENTS StateMachine REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::StateMachine) |
| qmake: | QT += statemachine |
| Наследует: | QAbstractState |
| Наследуется от: |
Типы публичного доступа
| Перечисление | ChildMode { ExclusiveStates, ParallelStates } |
| Перечисление | RestorePolicy { DontRestoreProperties, RestoreProperties } |
Свойства
- childMode : ChildMode
- errorState : QAbstractState*
- initialState : QAbstractState*
Публичные функции
| QState(QState::ChildMode childMode, QState *parent = nullptr) | |
| QState(QState *parent = nullptr) | |
| virtual | ~QState() |
| void | addTransition(QAbstractTransition *transition) |
| QSignalTransition * | addTransition(const QObject *sender, const char *signal, QAbstractState *target) |
| QSignalTransition * | addTransition(const QObject *sender, PointerToMemberFunction signal, QAbstractState *target) |
| QAbstractTransition * | addTransition(QAbstractState *target) |
| void | assignProperty(QObject *object, const char *name, const QVariant &value) |
| 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() должна быть вызвана для установки начального состояния. Дочерние состояния являются взаимоисключающими состояниями, и автомат состояний должен знать, какое дочернее состояние входить, когда родительское состояние является целью перехода.
Состояние излучает сигнал QState::finished() при входе в конечное дочернее состояние (QFinalState).
Функция setErrorState() устанавливает состояние ошибки состояния. Состояние ошибки — это состояние, в которое автомат состояний перейдет, если при попытке перехода в состояние будет обнаружена ошибка (например, потому, что не было установлено начальное состояние).
Документация по типам членов
Перечисление QState::ChildMode
Это перечисление определяет, как обрабатываются дочерние состояния состояния.
| Константа | Значение | Описание |
|---|---|---|
QState::ExclusiveStates |
0 |
Дочерние состояния являются взаимоисключающими, и начальное состояние должно быть установлено с помощью вызова QState::setInitialState(). |
QState::ParallelStates |
1 |
Дочерние состояния являются параллельными. При входе в родительское состояние все его дочерние состояния вступают в действие параллельно. |
Перечисление QState::RestorePolicy
Это перечисление определяет тип политики восстановления. Политика восстановления вступает в силу при входе в состояние, которое устанавливает одно или несколько свойств. Если политика восстановления установлена в RestoreProperties, автомат состояний сохранит исходное значение свойства перед установкой нового значения.
Позже, когда автомат переходит в состояние, которое не устанавливает значение для данного свойства, свойство автоматически восстановится до своего начального значения.
Для каждого свойства будет сохранено только одно начальное значение. Если автомат состояний уже сохранил значение для свойства, оно не будет перезаписано до тех пор, пока свойство не будет успешно восстановлено.
| Константа | Значение | Описание |
|---|---|---|
QState::DontRestoreProperties |
0 |
Автомат состояний не должен сохранять начальные значения свойств и восстанавливать их позже. |
QState::RestoreProperties |
1 |
Автомат состояний должен сохранять начальные значения свойств и восстанавливать их позже. |
См. также QStateMachine::globalRestorePolicy и QState::assignProperty().
END_OF_DOCUMENT_MARKERДокументация свойств
childMode : ChildMode
Это свойство содержит режим дочерних состояний этого состояния.
Значение по умолчанию этого свойства — QState::ExclusiveStates.
Функции доступа:
| QState::ChildMode | childMode() const |
| void | setChildMode(QState::ChildMode mode) |
Сигнал уведомления:
| void | childModeChanged() | [см. примечание ниже] |
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может быть отправлен пользователем.
errorState : QAbstractState*
Это свойство содержит состояние ошибки этого состояния.
Функции доступа:
| QAbstractState * | errorState() const |
| void | setErrorState(QAbstractState *state) |
Сигнал уведомления:
| void | errorStateChanged() | [см. примечание ниже] |
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может быть отправлен пользователем.
initialState : QAbstractState*
Это свойство содержит начальное состояние этого состояния (одно из его дочерних состояний).
Функции доступа:
| QAbstractState * | initialState() const |
| void | setInitialState(QAbstractState *state) |
Сигнал уведомления:
| void | initialStateChanged() | [см. примечание ниже] |
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может быть отправлен пользователем.
Документация функций-членов
QState::QState(QState::ChildMode childMode, QState *parent = nullptr)
Создает новое состояние с заданным childMode и заданным состоянием parent.
QState::QState(QState *parent = nullptr)
Создает новое состояние с заданным состоянием parent.
void QState::childModeChanged()
Этот сигнал генерируется при изменении свойства childMode.
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может быть отправлен пользователем.
Примечание: Сигнал уведомления для свойства childMode.
Функция была добавлена в Qt 5.4.
См. также QState::childMode.
void QState::errorStateChanged()
Этот сигнал генерируется при изменении свойства errorState.
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может быть отправлен пользователем.
Примечание: Сигнал уведомления для свойства errorState.
Функция была добавлена в Qt 5.4.
См. также QState::errorState.
void QState::finished()
Этот сигнал генерируется при входе в конечное дочернее состояние этого состояния.
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может быть отправлен пользователем.
См. также QFinalState.
void QState::initialStateChanged()
Этот сигнал генерируется при изменении свойства initialState.
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может быть отправлен пользователем.
Примечание: Сигнал уведомления для свойства initialState.
Функция была добавлена в Qt 5.4.
См. также QState::initialState.
void QState::propertiesAssigned()
Этот сигнал генерируется, когда всем свойствам назначено их окончательное значение. Если состояние назначает значение одному или нескольким свойствам, для которых существует анимация (либо заданная на переходе, либо как стандартная анимация в машине состояний), тогда сигнал будет сгенерирован не раньше, чем все такие анимации будут завершены.
Если соответствующих анимаций нет или нет заданных назначений свойств для состояния, то сигнал будет сгенерирован непосредственно перед входом в состояние.
См. также QState::assignProperty() и QAbstractTransition::addAnimation()
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может быть отправлен пользователем.
QState::~QState()
Удаляет это состояние.
void QState::addTransition(QAbstractTransition *transition)
Добавляет заданный transition. Переход имеет это состояние в качестве источника. Это состояние принимает владение переходом.
QSignalTransition *QState::addTransition(const QObject *sender, const char *signal, QAbstractState *target)
Добавляет переход, связанный с заданным signal объекта sender, и возвращает новый объект QSignalTransition. Переход имеет это состояние в качестве источника и заданное target в качестве целевого состояния.
QSignalTransition *QState::addTransition(const QObject *sender, PointerToMemberFunction signal, QAbstractState *target)
Это перегруженная функция.
Добавляет переход, связанный с заданным signal объекта sender, и возвращает новый объект QSignalTransition. Переход имеет это состояние в качестве источника и заданное target в качестве целевого состояния.
Функция была добавлена в Qt 5.5.
QAbstractTransition *QState::addTransition(QAbstractState *target)
Добавляет безусловный переход из этого состояния в заданное состояние target и возвращает объект нового перехода.
void QState::assignProperty(QObject *object, const char *name, const QVariant &value)
Указывает этому состоянию установить свойство с заданным name заданного object в заданное value при входе в состояние.
См. также propertiesAssigned().
QState::ChildMode QState::childMode() const
Возвращает режим дочерних состояний этого состояния.
Примечание: Функция-получатель для свойства childMode.
См. также setChildMode().
QAbstractState *QState::errorState() const
Возвращает состояние ошибки этого состояния.
Примечание: Функция-получатель для свойства errorState.
См. также setErrorState() и QStateMachine::error().
bool QState::event(QEvent *e)
Переопределяет: QAbstractState::event(QEvent *e).
QAbstractState *QState::initialState() const
Возвращает начальное состояние этого состояния, или nullptr если у состояния нет начального состояния.
Примечание: Функция-получатель для свойства initialState.
См. также setInitialState().
[override virtual protected] void QState::onEntry(QEvent *event)
Реализует: QAbstractState::onEntry(QEvent *event).
[override virtual protected] void QState::onExit(QEvent *event)
Реализует: QAbstractState::onExit(QEvent *event).
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().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qstate.html