Spec-Zone.ru › Qt

Тип QML StateMachine

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

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

State

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

Свойства

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

Сигналы

  • started()
  • stopped()

Методы

  • start()
  • stop()

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

StateMachine основана на концепциях и обозначениях Statecharts. StateMachine является частью Qt State Machine QML API

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

Прежде чем машина сможет начать работу, необходимо установить initialState. Начальное состояние — это состояние, в которое машина входит при запуске. Затем вы можете установить свойство running в true или вызвать start() для автоматного состояния. Сигнал started генерируется при входе в начальное состояние.

Автоматное состояние обрабатывает события и выполняет переходы до тех пор, пока не будет достигнуто конечное состояние верхнего уровня; в этот момент автоматное состояние генерирует сигнал finished(). Вы также можете явно stop() автоматное состояние (вы также можете установить свойство running в false). В этом случае генерируется сигнал stopped.

Пример использования

Следующий фрагмент кода демонстрирует автоматное состояние, которое завершится при нажатии на кнопку:

import QtQuick
import QtQml.StateMachine 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 и Qt State Machine QML Guide.

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

[только для чтения] 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-6.2/qml-qtqml-statemachine-statemachine.html

Spec-Zone.ru

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