Spec-Zone.ru › Qt 5.12

Тип QML StateMachine

Обеспечивает иерархическую конечную автоматную машину. Подробнее...

Заявление импорта: import QtQml.StateMachine 1.12
С момента: Qt 5.4
Наследует:

State

  • Список всех членов, включая унаследованные члены

Свойства

  • errorString : строка
  • globalRestorePolicy : перечисление
  • running : bool

Сигналы

  • started()
  • stopped()

Методы

  • start()
  • stop()

Подробное описание

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

Состояние выполнения этого автомата состояний.

См. также start() и stop().

Документация по сигналам

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.12/qml-qtqml-statemachine-statemachine.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API