Spec-Zone.ru › Qt 5.13

Тип QML StateMachine

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

Заявление об импорте: import QtQml.StateMachine 1.13
С момента: 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.13/qml-qtqml-statemachine-statemachine.html

Spec-Zone.ru

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