Spec-Zone.ru › Qt 5.9

Класс QScxmlStateMachine

Класс QScxmlStateMachine предоставляет интерфейс к конечным автоматам, созданным из файлов SCXML. Подробнее...

Заголовок: #include <QScxmlStateMachine>
qmake: QT += scxml
С момента: Qt 5.7
Инициализируется из: ScxmlStateMachine
Наследует: QObject
  • Список всех членов, включая унаследованные

Свойства

  • dataModel : QScxmlDataModel *
  • initialValues : QVariantMap
  • initialized : const bool
  • invoked : const bool
  • invokedServices : QVector<QScxmlInvokableService *> const
  • loader : QScxmlCompiler::Loader *
  • name : const QString
  • parseErrors : const QVector<QScxmlError>
  • running : bool
  • sessionId : const QString
  • tableData : QScxmlTableData *
  • 1 свойство унаследовано от QObject

Общедоступные функции

QStringList activeStateNames(bool compress = true) const
void cancelDelayedEvent(const QString &sendId)
QMetaObject::Connection connectToEvent(const QString &scxmlEventSpec, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection)
QMetaObject::Connection connectToEvent(const QString &scxmlEventSpec, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type = Qt::AutoConnection)
QMetaObject::Connection connectToEvent(const QString &scxmlEventSpec, Functor functor, Qt::ConnectionType type = Qt::AutoConnection)
QMetaObject::Connection connectToEvent(const QString &scxmlEventSpec, const QObject *context, Functor functor, Qt::ConnectionType type = Qt::AutoConnection)
QMetaObject::Connection connectToState(const QString &scxmlStateName, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection)
QMetaObject::Connection connectToState(const QString &scxmlStateName, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type = Qt::AutoConnection)
QMetaObject::Connection connectToState(const QString &scxmlStateName, Functor functor, Qt::ConnectionType type = Qt::AutoConnection)
QMetaObject::Connection connectToState(const QString &scxmlStateName, const QObject *context, Functor functor, Qt::ConnectionType type = Qt::AutoConnection)
QScxmlDataModel * dataModel() const
QVariantMap initialValues()
QVector<QScxmlInvokableService *> invokedServices() const
bool isActive(const QString &scxmlStateName) const
bool isDispatchableTarget(const QString &target) const
bool isInitialized() const
bool isInvoked() const
bool isRunning() const
QScxmlCompiler::Loader * loader() const
QString name() const
QVector<QScxmlError> parseErrors() const
QString sessionId() const
void setDataModel(QScxmlDataModel *model)
void setInitialValues(const QVariantMap &initialValues)
void setLoader(QScxmlCompiler::Loader *loader)
void setRunning(bool running)
void setTableData(QScxmlTableData *tableData)
QStringList stateNames(bool compress = true) const
void submitEvent(QScxmlEvent *event)
void submitEvent(const QString &eventName)
void submitEvent(const QString &eventName, const QVariant &data)
QScxmlTableData * tableData() const
  • 32 общедоступных функций, унаследованных от QObject

Общедоступные слоты

bool init()
void start()
void stop()
  • 1 общедоступный слот, унаследованный от QObject

Сигналы

void dataModelChanged(QScxmlDataModel *model)
void finished()
void initialValuesChanged(const QVariantMap &initialValues)
void initializedChanged(bool initialized)
void invokedServicesChanged(const QVector<QScxmlInvokableService *> &invokedServices)
void loaderChanged(QScxmlCompiler::Loader *loader)
void log(const QString &label, const QString &msg)
void reachedStableState()
void runningChanged(bool running)
void tableDataChanged(QScxmlTableData *tableData)
  • 2 сигнала унаследованы от QObject

Статические публичные члены

QScxmlStateMachine * fromData(QIODevice *data, const QString &fileName = QString())
QScxmlStateMachine * fromFile(const QString &fileName)
std::function<void( bool ) > onEntry(const QObject *receiver, const char *method)
std::function<void( bool ) > onEntry(Functor functor)
std::function<void( bool ) > onEntry(const QObject *receiver, PointerToMemberFunction method)
std::function<void( bool ) > onExit(const QObject *receiver, const char *method)
std::function<void( bool ) > onExit(Functor functor)
std::function<void( bool ) > onExit(const QObject *receiver, PointerToMemberFunction method)
  • 11 статических публичных членов унаследовано от QObject

Защищенные функции

QScxmlStateMachine(const QMetaObject *metaObject, QObject *parent = nullptr)
QScxmlStateMachine(QScxmlStateMachinePrivate &dd, QObject *parent = nullptr)
bool isActive(int stateIndex) const
  • 9 защищенных функций унаследовано от QObject

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

Класс QScxmlStateMachine предоставляет интерфейс к автоматам состояний, созданным из файлов SCXML.

QScxmlStateMachine — это реализация State Chart XML (SCXML).

Все состояния, определённые в файле SCXML, доступны как свойства QScxmlStateMachine. Эти свойства — булевы значения и указывают, активно или неактивно состояние.

Примечание: QScxmlStateMachine нуждается в QEventLoop для корректной работы. В цикле событий используется атрибут delay для событий и для планирования обработки автомата состояний при получении событий от вложенных (или родительских) автоматов состояний.

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

dataModel : QScxmlDataModel *

Это свойство содержит модель данных, которая должна использоваться для этой машины состояний.

SCXML модели данных описаны в Спецификация SCXML - 5 Модель данных и манипуляции с данными. Более подробная информация о поддерживаемых моделях данных доступна в Соответствии SCXML.

Изменение модели данных, когда машина состояний initialized уже запущена, не указано в стандарте SCXML и приводит к неопределенному поведению.

Функции доступа:

QScxmlDataModel * dataModel() const
void setDataModel(QScxmlDataModel *model)

Сигнал уведомления:

void dataModelChanged(QScxmlDataModel *model)

См. также QScxmlDataModel, QScxmlNullDataModel, QScxmlEcmaScriptDataModel и QScxmlCppDataModel.

initialValues : QVariantMap

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

Функции доступа:

QVariantMap initialValues()
void setInitialValues(const QVariantMap &initialValues)

Сигнал уведомления:

void initialValuesChanged(const QVariantMap &initialValues)

См. также QScxmlStateMachine::init() и QScxmlDataModel.

initialized : const bool

Это свойство содержит значение, указывающее, была ли инициализирована машина состояний.

Это true если машина состояний была инициализирована, false в противном случае.

Функции доступа:

bool isInitialized() const

Сигнал уведомления:

void initializedChanged(bool initialized)

См. также QScxmlStateMachine::init() и QScxmlDataModel.

invoked : const bool

Это свойство содержит значение, указывающее, была ли машина состояний вызвана из внешней машины состояний.

true когда машина состояний была запущена как служба с элементом <invoke>, false в противном случае.

Функции доступа:

bool isInvoked() const

invokedServices : QVector<QScxmlInvokableService *> const

Это свойство содержит список SCXML служб, которые были вызваны из основной машины состояний (возможно, рекурсивно).

Функции доступа:

QVector<QScxmlInvokableService *> invokedServices() const

Сигнал уведомления:

void invokedServicesChanged(const QVector<QScxmlInvokableService *> &invokedServices)

loader : QScxmlCompiler::Loader *

Это свойство содержит загрузчик, который в настоящее время используется для разрешения и загрузки URI для машины состояний.

Функции доступа:

QScxmlCompiler::Loader * loader() const
void setLoader(QScxmlCompiler::Loader *loader)

Сигнал уведомления:

void loaderChanged(QScxmlCompiler::Loader *loader)

name : const QString

Это свойство содержит имя машины состояний, заданное атрибутом name тега <scxml>.

Функции доступа:

QString name() const

parseErrors : const QVector<QScxmlError>

Это свойство содержит список ошибок разбора, возникших во время создания машины состояний из файла SCXML.

Функции доступа:

QVector<QScxmlError> parseErrors() const

running : bool

Это свойство содержит состояние выполнения данной машины состояний.

Функции доступа:

bool isRunning() const
void setRunning(bool running)

Сигнал уведомления:

void runningChanged(bool running)

См. также start().

sessionId : const QString

Это свойство содержит идентификатор сеанса текущей машины состояний.

Идентификатор сеанса используется для маршрутизации сообщений между родительской и дочерней машинами состояний. Если машина состояний запущена элементом <invoke>, все отправляемые ею события будут иметь поле invokeid , установленное в значение идентификатора сеанса. Машина состояний будет использовать источник события (установленный атрибутом target или targetexpr в элементе <send>) для отправки сообщений в соответствующую дочернюю машину состояний.

Функции доступа:

QString sessionId() const

См. также QScxmlEvent::invokeId().

tableData : QScxmlTableData *

Это свойство содержит данные таблицы, используемые при генерации кода C++ из файла SCXML.

Класс, реализующий машину состояний, будет использовать это свойство для присвоения сгенерированных данных таблицы. Машина состояний не берет на себя ответственность за данные таблицы.

Функции доступа:

QScxmlTableData * tableData() const
void setTableData(QScxmlTableData *tableData)

Сигнал уведомления:

void tableDataChanged(QScxmlTableData *tableData)

Документация по членам-функциям

[protected] QScxmlStateMachine::QScxmlStateMachine(const QMetaObject *metaObject, QObject *parent = nullptr)

Инициализирует экземпляр QScxmlStateMachine.

[protected] QScxmlStateMachine::QScxmlStateMachine(QScxmlStateMachinePrivate &dd, QObject *parent = nullptr)

Конструктор копирования.

QStringList QScxmlStateMachine::activeStateNames(bool compress = true) const

Возвращает список имен состояний всех активных состояний.

Когда состояние активное, все его родительские состояния также активны по определению. Если compress true (по умолчанию), родительские состояния будут отфильтрованы, и будут возвращены только листовые состояния. Если compress false, будет возвращён полный список активных состояний.

void QScxmlStateMachine::cancelDelayedEvent(const QString &sendId)

Отменяет отложенное событие со значением sendId.

QMetaObject::Connection QScxmlStateMachine::connectToEvent(const QString &scxmlEventSpec, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection)

Создаёт соединение указанного типа type от события, определённого scxmlEventSpec, к методу method объекта receiver. Метод method объекта receiver может принимать QScxmlEvent в качестве параметра. Например:

void mySlot(const QScxmlEvent &event);

В отличие от спецификаций событий в SCXML-документах, пробелы в scxmlEventSpec здесь недопустимы. Для подключения к нескольким событиям с разными префиксами необходимо вызывать connectToEvent() несколько раз.

Возвращает дескриптор соединения, который можно использовать для последующего разъединения.

QMetaObject::Connection QScxmlStateMachine::connectToEvent(const QString &scxmlEventSpec, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type = Qt::AutoConnection)

Создаёт соединение заданного типа type от события, заданного scxmlEventSpec, к методу method в объекте receiver.

Метод method объекта receiver должен принимать QScxmlEvent в качестве параметра.

В отличие от спецификаций событий в SCXML-документах, пробелы в scxmlEventSpec здесь недопустимы. Для подключения к нескольким событиям с разными префиксами, необходимо вызвать connectToEvent() несколько раз.

Возвращает дескриптор соединения, который можно использовать для последующего разъединения.

QMetaObject::Connection QScxmlStateMachine::connectToEvent(const QString &scxmlEventSpec, Functor functor, Qt::ConnectionType type = Qt::AutoConnection)

Создаёт соединение заданного типа type от события, заданного scxmlEventSpec, к functor.

Functor должен принимать QScxmlEvent в качестве параметра.

В отличие от спецификаций событий в SCXML-документах, пробелы в scxmlEventSpec здесь недопустимы. Для подключения к нескольким событиям с разными префиксами, необходимо вызвать connectToEvent() несколько раз.

Возвращает дескриптор соединения, который можно использовать для последующего разъединения.

QMetaObject::Connection QScxmlStateMachine::connectToEvent(const QString &scxmlEventSpec, const QObject *context, Functor functor, Qt::ConnectionType type = Qt::AutoConnection)

Создаёт соединение заданного типа type от события, заданного scxmlEventSpec, к functor, используя context в качестве контекста.

Functor должен принимать QScxmlEvent в качестве параметра.

В отличие от спецификаций событий в SCXML-документах, пробелы в scxmlEventSpec здесь недопустимы. Для подключения к нескольким событиям с разными префиксами, необходимо вызвать connectToEvent() несколько раз.

Возвращает дескриптор соединения, который можно использовать для последующего разъединения.

QMetaObject::Connection QScxmlStateMachine::connectToState(const QString &scxmlStateName, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection)

Создаёт соединение заданного типа type от состояния, определённого scxmlStateName, к методу method в объекте receiver. Метод method объекта receiver может принимать булевый аргумент, указывающий, стало ли подключенное состояние активным или неактивным. Например:

void mySlot(bool active);

Возвращает дескриптор соединения, который можно использовать для последующего разъединения.

QMetaObject::Connection QScxmlStateMachine::connectToState(const QString &scxmlStateName, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type = Qt::AutoConnection)

Создаёт соединение заданного типа type от состояния, заданного scxmlStateName, к методу method в объекте receiver.

Метод method объекта receiver должен принимать булевый аргумент, указывающий, стало ли подключенное состояние активным или неактивным.

Возвращает дескриптор соединения, который можно использовать для последующего разъединения.

QMetaObject::Connection QScxmlStateMachine::connectToState(const QString &scxmlStateName, Functor functor, Qt::ConnectionType type = Qt::AutoConnection)

Создаёт соединение заданного типа type от состояния, заданного scxmlStateName, к functor.

Functor должен принимать булевый аргумент, указывающий, стало ли подключенное состояние активным или неактивным.

Возвращает дескриптор соединения, который можно использовать для последующего разъединения.

QMetaObject::Connection QScxmlStateMachine::connectToState(const QString &scxmlStateName, const QObject *context, Functor functor, Qt::ConnectionType type = Qt::AutoConnection)

Создаёт соединение заданного типа type от состояния, заданного scxmlStateName, к functor, используя context в качестве контекста.

Functor должен принимать булевый аргумент, указывающий, стало ли подключенное состояние активным или неактивным.

Возвращает дескриптор соединения, который можно использовать для последующего разъединения.

QScxmlDataModel *QScxmlStateMachine::dataModel() const

Возвращает используемую модель данных для автомата состояний.

Примечание: Функция-геттер для свойства dataModel.

См. также setDataModel().

[signal] void QScxmlStateMachine::finished()

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

См. также running.

[static] QScxmlStateMachine *QScxmlStateMachine::fromData(QIODevice *data, const QString &fileName = QString())

Создаёт автомат состояний путём чтения из QIODevice, заданного data.

Этот метод всегда возвращает автомат состояний. Если при чтении SCXML-файла fileName возникнут ошибки, автомат состояний не может быть запущен. Ошибки можно получить, вызвав метод parseErrors().

См. также parseErrors().

[static] QScxmlStateMachine *QScxmlStateMachine::fromFile(const QString &fileName)

Создаёт автомат состояний из SCXML-файла, указанного fileName.

Этот метод всегда возвращает автомат состояний. Если при чтении SCXML-файла возникнут ошибки, автомат состояний не может быть запущен. Ошибки можно получить, вызвав метод parseErrors().

См. также parseErrors().

[slot] bool QScxmlStateMachine::init()

Инициализирует автомат состояний.

Инициализация автомата состояний состоит из вызова QScxmlDataModel::setup(), задания начальных значений для <data> элементов и выполнения любых <script> тегов тега <scxml>. Начальные значения данных берутся из свойства initialValues.

Возвращает false, если произошли ошибки разбора или если какой-либо из этапов инициализации завершился неудачно. Возвращает true, в противном случае.

bool QScxmlStateMachine::isActive(const QString &scxmlStateName) const

Возвращает true, если состояние, заданное scxmlStateName, активно, false, в противном случае.

[protected] bool QScxmlStateMachine::isActive(int stateIndex) const

Возвращает true, если состояние с идентификатором stateIndex активно.

Этот метод является частью интерфейса к скомпилированному представлению автоматов состояний SCXML. Он должен использоваться только внутри и автоматами состояний, скомпилированными из документов SCXML.

bool QScxmlStateMachine::isDispatchableTarget(const QString &target) const

Возвращает true если сообщение в target может быть обработано этим автоматом состояний.

Допустимые значения target:

  • #_parent для родительского автомата состояний, если текущий автомат запущен <invoke>
  • #_internal для текущего автомата состояний
  • #_scxml_sessionid, где sessionid — идентификатор сессии текущего автомата состояний
  • #_servicename, где servicename — идентификатор или имя сервиса, запущенного с <invoke> этим автоматом состояний

bool QScxmlStateMachine::isRunning() const

Возвращает true если автомат состояний работает, false в противном случае.

Примечание: Функция-геттер для свойства running.

См. также setRunning() и runningChanged().

[signal] void QScxmlStateMachine::log(const QString &label, const QString &msg)

Этот сигнал излучается, если используется тег <log> в SCXML. label — значение атрибута label тега <log>. msg — значение вычисленного атрибута expr тега <log>. Если атрибут expr отсутствует, возвращается пустая строка.

[static] std::function<void( bool ) > QScxmlStateMachine::onEntry(const QObject *receiver, const char *method)

Возвращает функтор, принимающий булево значение и вызывающий заданный метод method на receiver с помощью QMetaObject::invokeMethod() если это значение true и receiver ещё не удалён.

Заданный method не должен принимать никаких аргументов. method — просто имя метода, не заключённое в SIGNAL() или SLOT().

Это полезно для обертывания обработчиков для connectToState(), которые должны выполняться только при входе в состояние.

[static] std::function<void( bool ) > QScxmlStateMachine::onEntry(Functor functor)

Возвращает функтор, принимающий булево значение и вызывающий заданный functor если это значение true. Заданный functor не должен принимать никаких аргументов.

Это полезно для обертывания обработчиков для connectToState(), которые должны выполняться только при входе в состояние.

[static] std::function<void( bool ) > QScxmlStateMachine::onEntry(const QObject *receiver, PointerToMemberFunction method)

Возвращает функтор, принимающий булево значение и вызывающий заданный method на receiver если это значение true и receiver ещё не удалён. Заданный method не должен принимать никаких аргументов.

Это полезно для обертывания обработчиков для connectToState(), которые должны выполняться только при входе в состояние.

[static] std::function<void( bool ) > QScxmlStateMachine::onExit(const QObject *receiver, const char *method)

Возвращает функтор, принимающий булево значение и вызывающий заданный метод method на receiver с помощью QMetaObject::invokeMethod() если это значение false и receiver ещё не удалён.

Заданный method не должен принимать никаких аргументов. method — просто имя метода, не заключённое в SIGNAL(...) или SLOT(...).

Это полезно для обертывания обработчиков для connectToState(), которые должны выполняться только при выходе из состояния.

[static] std::function<void( bool ) > QScxmlStateMachine::onExit(Functor functor)

Возвращает функтор, принимающий булево значение и вызывающий заданный functor если это значение false. Заданный functor не должен принимать никаких аргументов.

Это полезно для обертывания обработчиков для connectToState(), которые должны выполняться только при выходе из состояния.

[static] std::function<void( bool ) > QScxmlStateMachine::onExit(const QObject *receiver, PointerToMemberFunction method)

Возвращает функтор, принимающий булево значение и вызывающий заданный method на receiver если это значение false и receiver ещё не удалён. Заданный method не должен принимать никаких аргументов.

Это полезно для обертывания обработчиков для connectToState(), которые должны выполняться только при выходе из состояния.

[signal] void QScxmlStateMachine::reachedStableState()

Этот сигнал излучается, когда очередь событий пуста в конце макрошага или когда достигнуто конечное состояние.

[signal] void QScxmlStateMachine::runningChanged(bool running)

Этот сигнал излучается, когда изменяется свойство running со значением running.

Примечание: Сигнал-уведомление для свойства running.

void QScxmlStateMachine::setDataModel(QScxmlDataModel *model)

Устанавливает модель данных для этого автомата состояний в model. Существует взаимно-однозначное соответствие между автоматами состояний и моделями. После установки модели её нельзя изменить. Попытки установки модели с помощью этого метода будут проигнорированы.

Примечание: Функция-сеттер для свойства dataModel.

См. также dataModel().

void QScxmlStateMachine::setRunning(bool running)

Запускает автомат состояний, если running — true, или останавливает его в противном случае.

Примечание: Функция-сеттер для свойства running.

См. также start(), stop(), isRunning(), и runningChanged().

[slot] void QScxmlStateMachine::start()

Запускает этот автомат состояний. Автомат сбросит свою конфигурацию и перейдёт в начальное состояние. Когда будет введено конечное состояние верхнего уровня, автомат излучит сигнал finished().

Примечание: Автомат состояний не будет работать без работающей очереди событий, например, основной очереди событий приложения, запущенной с помощью QCoreApplication::exec() или QApplication::exec().

См. также runningChanged(), setRunning(), stop(), и finished().

QStringList QScxmlStateMachine::stateNames(bool compress = true) const

Возвращает список имён всех состояний.

Когда compress — true (по умолчанию), состояния, содержащие дочерние состояния, будут отфильтрованы, и будут возвращены только листовые состояния. Когда это false, будет возвращён полный список всех состояний.

Возвращаемый список не содержит состояния возможных вложенных автоматов состояний.

Примечание: Порядок имён состояний в списке — это порядок, в котором состояния встречались в документе SCXML.

[slot] void QScxmlStateMachine::stop()

Останавливает этот автомат состояний. Автомат не будет выполнять дальнейшие переходы состояний. Его свойство running устанавливается в false.

См. также runningChanged(), start(), и setRunning().

void QScxmlStateMachine::submitEvent(QScxmlEvent *event)

Отправляет событие SCXML event во внутреннюю или внешнюю очередь событий в зависимости от приоритета события.

Если установлена задержка, событие будет помещено в очередь на доставку после истечения таймаута. Автомат состояний берёт владение event и удаляет его после обработки.

void QScxmlStateMachine::submitEvent(const QString &eventName)

Утилитарный метод для создания и отправки внешнего события с указанным eventName в качестве имени.

void QScxmlStateMachine::submitEvent(const QString &eventName, const QVariant &data)

Утилитарный метод для создания и отправки внешнего события с указанным именем eventName в качестве имени и данными data в качестве полезной нагрузки.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qscxmlstatemachine.html

Spec-Zone.ru

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