Spec-Zone.ru › Qt 6.1

Тип QML StateMachine

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

Заявление об импорте: import QtQml.StateMachine 6.1
С: 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). Обзор в рамках фреймворка предоставляет несколько графов состояний и код для их построения.

Прежде чем машина может быть запущена, необходимо установить 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 автомата StateMachine на значение, отличное от QState::ExclusiveStates, приведет к некорректному автомату состояния и может привести к неправильному поведению.

См. также QAbstractState, State, SignalTransition, TimeoutTransition, HistoryState и Qt State Machine QML Руководство.

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

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

Spec-Zone.ru

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