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