Тип StateMachine QML
Обеспечивает иерархическую конечную автоматную машину. Подробнее...
| Заявление импорта: | import QtQml.StateMachine 1.11 |
| С тех пор: | Qt 5.4 |
| Наследует: |
Свойства
- errorString : строка
- globalRestorePolicy : перечисление
- running : логическое значение
Сигналы
Методы
Подробное описание
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(). Выполнение графа состояний не остановится при входе в состояние ошибки. Если состояние ошибки не применимо к ошибочному состоянию, машина прекратит выполнение и сообщение об ошибке будет выведено в консоль.
См. такжеQAbstractState, Состояние, SignalTransition, TimeoutTransition, HistoryState и Фреймворк декларативной машины состояний.
Документация по свойствам
[только для чтения] errorString : строка
Строка ошибки этой машины состояний.
globalRestorePolicy : перечисление
Политика восстановления для состояний этой машины состояний.
Значение по умолчанию для этого свойства — QState.DontRestoreProperties.
Это перечисление определяет тип политики восстановления. Политика восстановления применяется при входе в состояние, которое устанавливает одно или несколько свойств. Если политика восстановления установлена в QState.RestoreProperties, машина состояний сохранит исходное значение свойства перед установкой нового значения.
Позже, когда машина перейдет в состояние, которое не задает значение для данного свойства, свойство будет автоматически восстановлено до своего начального значения.
Только одно начальное значение будет сохранено для каждого данного свойства. Если машина состояний уже сохранила значение свойства, оно не будет перезаписано, пока свойство не будет успешно восстановлено.
- QState.DontRestoreProperties Машина состояний не должна сохранять начальные значения свойств и восстанавливать их позже.
- QState.RestoreProperties Машина состояний должна сохранять начальные значения свойств и восстанавливать их позже.
running : логическое значение
Состояние работы этой машины состояний.
Документация по сигналам
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/archives/qt-5.11/qml-qtqml-statemachine-statemachine.html