Тип QML StateMachine
Обеспечивает иерархическую конечный автомат. Подробнее...
| Заявление об импорте: | import QtQml.StateMachine 1.0 |
| С тех пор: | 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/archives/qt-5.6/qml-qtqml-statemachine-statemachine.html