Класс 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().
Документация по свойствам
[bindable] childMode : ChildMode
Примечание: Это свойство поддерживает привязки QProperty.
Это свойство содержит режим дочерних состояний этого состояния.
Значение по умолчанию для этого свойства — QState::ExclusiveStates.
[bindable] errorState : QAbstractState*
Примечание: Это свойство поддерживает привязки QProperty.
Это свойство содержит состояние ошибки этого состояния.
[bindable] initialState : QAbstractState*
Примечание: Это свойство поддерживает привязки QProperty.
Это свойство содержит начальное состояние этого состояния (одного из его дочерних состояний).
Документация по членам-функциям
QState::QState(QState::ChildMode childMode, QState *parent = nullptr)
Создает новое состояние с заданным childMode и заданным состоянием parent.
QState::QState(QState *parent = nullptr)
Создает новое состояние с заданным состоянием parent.
[private signal, since 5.4] void QState::childModeChanged()
Этот сигнал излучается при изменении свойства childMode.
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может излучаться пользователем.
Примечание: Сигнал-уведомление для свойства childMode.
Эта функция была добавлена в Qt 5.4.
См. также QState::childMode.
[private signal, since 5.4] void QState::errorStateChanged()
Этот сигнал излучается при изменении свойства errorState.
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может излучаться пользователем.
Примечание: Сигнал-уведомление для свойства errorState.
Эта функция была добавлена в Qt 5.4.
См. также QState::errorState.
[private signal] void QState::finished()
Этот сигнал излучается, когда вводится конечное дочернее состояние этого состояния.
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может излучаться пользователем.
См. также QFinalState.
[private signal, since 5.4] void QState::initialStateChanged()
Этот сигнал излучается при изменении свойства initialState.
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может излучаться пользователем.
Примечание: Сигнал-уведомление для свойства initialState.
Эта функция была добавлена в Qt 5.4.
См. также QState::initialState.
[private 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 в качестве целевого состояния.
[since 5.5] 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)
Устанавливает режим дочерних состояний этого состояния.
Примечание: Функция-установщик для свойства 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
Возвращает исходящие переходы данного состояния (т.е. переходы, где это состояние является исходным состоянием), или пустой список, если у этого состояния нет исходящих переходов.
См. также addTransition().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qstate.html