Класс QState
Класс QState предоставляет универсальное состояние для QStateMachine. Подробнее...
| Заголовок: | #include <QState> |
| qmake: | QT += core |
| С момента: | Qt 4.6 |
| Наследует: | QAbstractState |
| Наследуется от: |
Этот класс был представлен в Qt 4.6.
Типы публичного доступа
| Перечисление | 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 является частью Фреймворка управляющих машин состояний.
Функция addTransition() добавляет переход. Функция removeTransition() удаляет переход. Функция transitions() возвращает исходящие переходы состояния.
Функция assignProperty() используется для определения назначений свойств, которые должны быть выполнены при входе в состояние.
Состояния верхнего уровня должны принимать объект QStateMachine в качестве родительского состояния или добавляться в управляющую машину состояний с помощью QStateMachine::addState().
Состояния с дочерними состояниями
Свойство childMode определяет, как обрабатываются дочерние состояния. Для групп состояний, отличных от параллельных, необходимо вызвать функцию setInitialState() для установки начального состояния. Дочерние состояния являются взаимно исключающими состояниями, и управляющей машине состояний необходимо знать, какое дочернее состояние входить, когда родительское состояние является целью перехода.
Состояние излучает сигнал QState::finished() при входе в конечное дочернее состояние (QFinalState).
Функция 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().
Документация свойств
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.
[signal] void QState::childModeChanged()
Этот сигнал излучается при изменении свойства childMode.
Эта функция была добавлена в Qt 5.4.
Примечание: Это частный сигнал. Его можно использовать в соединениях сигналов, но пользователь не может его излучать.
Примечание: Сигнал уведомления для свойства childMode.
См. также QState::childMode.
[signal] void QState::errorStateChanged()
Этот сигнал излучается при изменении свойства errorState.
Эта функция была добавлена в Qt 5.4.
Примечание: Это частный сигнал. Его можно использовать в соединениях сигналов, но пользователь не может его излучать.
Примечание: Сигнал уведомления для свойства errorState.
См. также QState::errorState.
[signal] void QState::finished()
Этот сигнал излучается при входе в конечное дочернее состояние этого состояния.
Примечание: Это частный сигнал. Его можно использовать в соединениях сигналов, но пользователь не может его излучать.
См. также QFinalState.
[signal] void QState::initialStateChanged()
Этот сигнал излучается при изменении свойства initialState.
Эта функция была добавлена в Qt 5.4.
Примечание: Это частный сигнал. Его можно использовать в соединениях сигналов, но пользователь не может его излучать.
Примечание: Сигнал уведомления для свойства initialState.
См. также QState::initialState.
[signal] void QState::propertiesAssigned()
Этот сигнал излучается, когда все свойства получили свои окончательные значения. Если состояние назначает значение одному или нескольким свойствам, для которых существует анимация (либо заданная на переходе, либо по умолчанию в машине состояний), то сигнал не будет излучен, пока все такие анимации не завершатся.
Если нет соответствующих анимаций или нет назначений свойств для состояния, то сигнал будет излучен непосредственно перед входом в состояние.
Примечание: Это частный сигнал. Его можно использовать в соединениях сигналов, но пользователь не может его излучать.
См. также QState::assignProperty() и QAbstractTransition::addAnimation().
[virtual] 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().
[override virtual protected] 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
Возвращает исходящие переходы этого состояния (т.е. переходы, где это состояние является исходным состоянием) или пустой список, если у этого состояния нет исходящих переходов.
Функция была добавлена в Qt 4.7.
См. также addTransition().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qstate.html