Тип StateMachine QML
Обеспечивает иерархическую конечную автоматную машину. Подробнее...
| Оператор импорта: | import QtQml.StateMachine 1.15 |
| С момента: | Qt 5.4 |
| Наследует: |
Свойства
- errorString : строка
- globalRestorePolicy : перечисление
- running : bool
Сигналы
Методы
Подробное описание
StateMachine основана на концепциях и обозначениях Statecharts. StateMachine является частью Фреймворка декларативных автоматных машин.
Автоматная машина управляет набором состояний и переходов между этими состояниями; эти состояния и переходы определяют граф состояния. После построения графа состояний, автоматная машина может выполнить его. Алгоритм выполнения StateMachine основан на алгоритме State Chart XML (SCXML). Обзор фреймворка предоставляет несколько графов состояний и код для их построения.
Перед запуском машины необходимо установить initialState. Начальное состояние — это состояние, в которое машина входит при запуске. Затем вы можете установить свойство running в true или запустить автоматную машину с помощью start(). Сигнал started отправляется при входе в начальное состояние.
Автоматная машина обрабатывает события и выполняет переходы до тех пор, пока не будет достигнуто конечное состояние верхнего уровня; затем автоматная машина отправляет сигнал finished(). Также можно явно остановить автоматную машину (можно также установить свойство running в false). В этом случае отправляется сигнал stopped.
Пример использования
Следующий фрагмент кода демонстрирует автоматную машину, которая завершится при нажатии кнопки:
import QtQuick 2.0
import QtQml.StateMachine 1.0 as DSM
Rectangle {
Button {
anchors.fill: parent
id: button
text: "Finish state"
DSM.StateMachine {
id: stateMachine
initialState: state
running: true
DSM.State {
id: state
DSM.SignalTransition {
targetState: finalState
signal: button.clicked
}
}
DSM.FinalState {
id: finalState
}
onFinished: Qt.quit()
}
}
} Если возникнет ошибка, машина будет искать errorState, и если он доступен, войдёт в это состояние. После входа в состояние ошибки тип ошибки можно получить с помощью error(). Выполнение графа состояний не остановится при входе в состояние ошибки. Если для ошибочного состояния не применимо состояние ошибки, машина прекратит выполнение и сообщение об ошибке будет выведено в консоль.
Предупреждение: Установка childMode для StateMachine на значение, отличное от QState::ExclusiveStates, приведёт к некорректной автоматной машине и может привести к неверному поведению.
См. также QAbstractState, State, SignalTransition, TimeoutTransition, HistoryState и Фреймворк декларативных автоматных машин.
Документация по свойствам
[только для чтения] errorString : строка
Строка ошибки этой автоматной машины.
globalRestorePolicy : перечисление
Политика восстановления для состояний этой автоматной машины.
Значение по умолчанию этого свойства — QState.DontRestoreProperties.
Это перечисление определяет тип политики восстановления. Политика восстановления применяется при входе в состояние, которое устанавливает одно или несколько свойств. Если политика восстановления установлена в QState.RestoreProperties, автоматная машина сохранит исходное значение свойства перед установкой нового значения.
Позже, когда машина войдёт в состояние, которое не устанавливает значение для данного свойства, свойство будет автоматически восстановлено до своего первоначального значения.
Для любого данного свойства будет сохранено только одно начальное значение. Если автоматная машина уже сохранила значение свойства, оно не будет перезаписано, пока свойство не будет успешно восстановлено.
- QState.DontRestoreProperties Автоматная машина не должна сохранять начальные значения свойств и восстанавливать их позже.
- QState.RestoreProperties Автоматная машина должна сохранять начальные значения свойств и восстанавливать их позже.
running : bool
Состояние выполнения этой автоматной машины.
Документация по сигналам
started()
Этот сигнал отправляется при входе автоматной машины в её начальное состояние (State::initialState).
Примечание: Соответствующий обработчик — onStarted.
См. также running, start() и State::finished.
stopped()
Этот сигнал отправляется при остановке автоматной машины.
Примечание: Соответствующий обработчик — onStopped.
См. также running, stop() и State::finished.
Документация по методам
start()
Запускает эту автоматную машину. Машина сбросит свою конфигурацию и перейдёт в начальное состояние. Когда будет достигнуто конечное состояние верхнего уровня (FinalState), машина отправит сигнал finished().
Примечание: Автоматная машина не будет работать без цикла обработки событий, такого как основной цикл обработки событий приложения, запущенный с помощью QCoreApplication::exec() или QApplication::exec().
См. также started, State::finished, stop(), State::initialState и running.
stop()
Останавливает эту автоматную машину. Автоматная машина прекратит обработку событий и отправит сигнал stopped.
См. также stopped, start() и running.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qml-qtqml-statemachine-statemachine.html