Класс 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() устанавливает состояние ошибки состояния. Состояние ошибки — это состояние, в которое машина состояний перейдёт, если при попытке перехода в состояние будет обнаружена ошибка (например, потому, что начальное состояние не было установлено).
Документация по типам членов
перечисление 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.
[signal] void QState::childModeChanged()
Этот сигнал испускается при изменении свойства childMode.
Примечание: Это частный сигнал. Он может использоваться в подключениях сигналов, но не может испускаться пользователем.
Примечание: Сигнал уведомления для свойства childMode.
Эта функция была добавлена в Qt 5.4.
См. также QState::childMode.
[signal] void QState::errorStateChanged()
Этот сигнал испускается при изменении свойства errorState.
Примечание: Это частный сигнал. Он может использоваться в подключениях сигналов, но не может испускаться пользователем.
Примечание: Сигнал уведомления для свойства errorState.
Эта функция была добавлена в Qt 5.4.
См. также QState::errorState.
[signal] void QState::finished()
Этот сигнал испускается при входе в конечное дочернее состояние этого состояния.
Примечание: Это частный сигнал. Он может использоваться в подключениях сигналов, но не может испускаться пользователем.
См. также QFinalState.
[signal] void QState::initialStateChanged()
Этот сигнал испускается при изменении свойства initialState.
Примечание: Это частный сигнал. Он может использоваться в подключениях сигналов, но не может испускаться пользователем.
Примечание: Сигнал уведомления для свойства initialState.
Эта функция была добавлена в Qt 5.4.
См. также 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 в качестве целевого состояния.
template <typename PointerToMemberFunction> 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.15/qstate.html