Spec-Zone.ru › Qt 5.14

Тип QML StateMachine

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

Выражение импорта: import QtQml.StateMachine 1.14
С тех пор: Qt 5.4
Наследует:

State

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

Свойства

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

Сигналы

  • started()
  • stopped()

Методы

  • start()
  • stop()

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

StateMachine основана на концепциях и обозначениях Statecharts. StateMachine является частью Фреймворка декларативного конечного автомата.

Автомат состояния управляет набором состояний и переходами между этими состояниями; эти состояния и переходы определяют граф состояний. После построения графа состояний автомат состояний может его выполнить. Алгоритм выполнения StateMachine основан на алгоритме State Chart XML (SCXML). Обзор фреймворка qmlstatemachine предоставляет несколько графиков состояний и код для их построения.

Перед запуском машины необходимо установить 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(). Выполнение графа состояний не останавливается при входе в состояние ошибки. Если для ошибочного состояния нет применимого состояния ошибки, машина прекращает выполнение и выводит сообщение об ошибке в консоль.

Предупреждение: Установка childMode автомата состояния на любое значение, кроме QState::ExclusiveStates, приведет к созданию некорректного автомата состояний и может привести к неверному поведению.

См. также QAbstractState, State, SignalTransition, TimeoutTransition, HistoryState и Фреймворк декларативного конечного автомата.

Документация по свойствам

[только для чтения] errorString : строка

Строка ошибки этого автомата состояний.

globalRestorePolicy : перечисление

Политика восстановления для состояний этого автомата состояний.

Значение по умолчанию для этого свойства — QState.DontRestoreProperties.

Это перечисление определяет тип политики восстановления. Политика восстановления применяется при входе в состояние, которое устанавливает одно или несколько свойств. Если политика восстановления установлена в QState.RestoreProperties, автомат состояний сохранит исходное значение свойства перед установкой нового значения.

Позже, при входе в состояние, которое не устанавливает значение для данного свойства, свойство автоматически восстановится до своего начального значения.

Для каждого данного свойства будет сохранено только одно начальное значение. Если автомат состояний уже сохранил значение для свойства, оно не будет перезаписано, пока свойство не будет успешно восстановлено.

  • QState.DontRestoreProperties Автомат состояний не должен сохранять начальные значения свойств и восстанавливать их позже.
  • QState.RestoreProperties Автомат состояний должен сохранять начальные значения свойств и восстанавливать их позже.

running : логическое

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

См. также 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.14/qml-qtqml-statemachine-statemachine.html

Spec-Zone.ru

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