Spec-Zone.ru › Qt 5.9

Тип StateMachine QML

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

Заявление об импорте: import QtQml.StateMachine 1.0
С момента: 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().

Примечание: конечный автомат не будет работать без цикла событий 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-5.9/qml-qtqml-statemachine-statemachine.html

Spec-Zone.ru

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