Тип QML StateMachine
Обеспечивает иерархическую конечную автоматную машину. Подробнее...
| Заявление об импорте: | import QtQml.StateMachine 1.13 |
| С момента: | Qt 5.4 |
| Наследует: |
Свойства
- errorString : строка
- globalRestorePolicy : перечисление
- running : bool
Сигналы
Методы
Подробное описание
StateMachine основана на концепциях и обозначениях Statecharts. StateMachine является частью фреймворка декларативного автомата состояний.
Автомат состояний управляет набором состояний и переходами между этими состояниями; эти состояния и переходы определяют граф состояний. После построения графа состояний автомат состояний может его выполнить. Алгоритм выполнения StateMachine основан на алгоритме State Chart XML (SCXML). Обзор фреймворка содержит несколько графиков состояний и код для их построения.
Прежде чем машина сможет быть запущена, необходимо установить initialState. Начальное состояние — это состояние, в которое машина переходит при запуске. Затем вы можете установить свойство running в true или вызвать start() для автомата состояний. Сигнал started генерируется при входе в начальное состояние.
Автомат состояний обрабатывает события и выполняет переходы до тех пор, пока не будет достигнуто конечное состояние верхнего уровня; в этом случае автомат состояний генерирует сигнал finished(). Вы также можете явно вызвать stop() автомата состояний (вы также можете установить свойство 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, 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.13/qml-qtqml-statemachine-statemachine.html