Класс QState
Класс QState предоставляет универсальное состояние для QStateMachine. Подробнее...
| Заголовок: | #include <QState> |
| qmake: | QT += core |
| С момента: | Qt 4.6 |
| Наследует: | QAbstractState |
| Наследуется от: |
Типы публичного доступа
| Перечисление | ChildMode { ExclusiveStates, ParallelStates } |
| Перечисление | RestorePolicy { DontRestoreProperties, RestoreProperties } |
Свойства
- childMode : ChildMode
- errorState : QAbstractState*
- initialState : QAbstractState*
- 1 свойство унаследовано от QAbstractState
- 1 свойство унаследовано от QObject
Публичные функции
| QState(QState *parent = nullptr) | |
| QState(QState::ChildMode childMode, 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 |
- 3 public functions inherited from QAbstractState
- 32 public functions inherited from QObject
Сигналы
| void | childModeChanged() |
| void | errorStateChanged() |
| void | finished() |
| void | initialStateChanged() |
| void | propertiesAssigned() |
- 3 signals inherited from QAbstractState
- 2 signals inherited from QObject
Статические публичные члены
| const QMetaObject | staticMetaObject |
- 10 static public members inherited from QObject
Переопределённые защищённые функции
| virtual bool | event(QEvent *e) override |
| virtual void | onEntry(QEvent *event) override |
| virtual void | onExit(QEvent *event) override |
- 3 protected functions inherited from QAbstractState
- 9 protected functions inherited from QObject
Дополнительные унаследованные члены
- 1 public slot inherited from QObject
- 3 protected functions inherited from QAbstractState
- 9 protected functions inherited from QObject
Подробное описание
Класс QState предоставляет универсальное состояние для QStateMachine.
Объекты QState могут иметь дочерние состояния и переходы в другие состояния. QState входит в состав Фреймворка управления состоянием.
Функция 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().
Документация свойств
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 *parent = nullptr)
Создаёт новое состояние с заданным состоянием parent.
QState::QState(QState::ChildMode childMode, QState *parent = nullptr)
Создаёт новое состояние с заданным childMode и заданным состоянием parent.
[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().
[signal] void QState::childModeChanged()
Этот сигнал испускается при изменении свойства childMode.
Эта функция была добавлена в Qt 5.4.
Примечание: Это частный сигнал. Он может использоваться в подключениях сигналов, но не может испускаться пользователем.
Примечание: Сигнал уведомления для свойства childMode.
См. также QState::childMode.
QAbstractState *QState::errorState() const
Возвращает состояние ошибки этого состояния.
Примечание: Функция-получатель для свойства errorState.
См. также setErrorState() и QStateMachine::error().
[signal] void QState::errorStateChanged()
Этот сигнал испускается при изменении свойства errorState.
Эта функция была добавлена в Qt 5.4.
Примечание: Это частный сигнал. Он может использоваться в подключениях сигналов, но не может испускаться пользователем.
Примечание: Сигнал уведомления для свойства errorState.
См. также QState::errorState.
[override virtual protected] bool QState::event(QEvent *e)
Переопределено из QAbstractState::event().
[signal] void QState::finished()
Этот сигнал испускается при входе в конечное дочернее состояние этого состояния.
Примечание: Это частный сигнал. Он может использоваться в подключениях сигналов, но не может испускаться пользователем.
См. также QFinalState.
QAbstractState *QState::initialState() const
Возвращает начальное состояние этого состояния или 0, если у состояния нет начального состояния.
Примечание: Функция-получатель для свойства initialState.
См. также setInitialState().
[signal] void QState::initialStateChanged()
Этот сигнал испускается при изменении свойства initialState.
Эта функция была добавлена в Qt 5.4.
Примечание: Это частный сигнал. Его можно использовать в соединениях сигналов, но он не может быть выпущен пользователем.
Примечание: Сигнал уведомления для свойства initialState.
См. также QState::initialState.
[override virtual protected] void QState::onEntry(QEvent *event)
Переопределено из QAbstractState::onEntry().
[override virtual protected] void QState::onExit(QEvent *event)
Переопределено из QAbstractState::onExit().
[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. Если состояние ошибки не установлено или установлено в 0, состояние будет наследоваться от состояния ошибки родителя рекурсивно. Если состояние ошибки не установлено ни для самого состояния, ни для какого-либо из его предков, ошибка приведёт к остановке работы машины и выведению ошибки в консоль.
Примечание: Функция-сеттер для свойства 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.12/qstate.html