- Qt 6.8
- Qt SCXML
- C++ Classes
- QScxmlDataModel
- Qt 6.8.3 Reference Documentation

# QScxmlDataModel Class

The QScxmlDataModel class is the data model base class for a Qt SCXML state machine. More...

Header: | `#include <QScxmlDataModel>`
CMake: | `find_package(Qt6 REQUIRED COMPONENTS Scxml)` `target_link_libraries(mytarget PRIVATE Qt6::Scxml)`
qmake: | `QT += scxml`
Inherited By: | QScxmlCppDataModel and QScxmlNullDataModel

- List of all members, including inherited members

## Public Types

class | ForeachLoopBody

## Properties

- stateMachine : QScxmlStateMachine*

## Public Functions

| QScxmlDataModel(QObject *parent = nullptr)
QBindable<QScxmlStateMachine *> | bindableStateMachine()
virtual void | evaluateAssignment(QScxmlExecutableContent::EvaluatorId id, bool *ok) = 0
virtual void | evaluateForeach(QScxmlExecutableContent::EvaluatorId id, bool *ok, QScxmlDataModel::ForeachLoopBody *body) = 0
virtual void | evaluateInitialization(QScxmlExecutableContent::EvaluatorId id, bool *ok) = 0
virtual bool | evaluateToBool(QScxmlExecutableContent::EvaluatorId id, bool *ok) = 0
virtual QString | evaluateToString(QScxmlExecutableContent::EvaluatorId id, bool *ok) = 0
virtual QVariant | evaluateToVariant(QScxmlExecutableContent::EvaluatorId id, bool *ok) = 0
virtual void | evaluateToVoid(QScxmlExecutableContent::EvaluatorId id, bool *ok) = 0
virtual bool | hasScxmlProperty(const QString &name) const = 0
virtual QVariant | scxmlProperty(const QString &name) const = 0
virtual void | setScxmlEvent(const QScxmlEvent &event) = 0
virtual bool | setScxmlProperty(const QString &name, const QVariant &value, const QString &context) = 0
void | setStateMachine(QScxmlStateMachine *stateMachine)
virtual bool | setup(const QVariantMap &initialDataValues) = 0
QScxmlStateMachine * | stateMachine() const

## Signals

void | stateMachineChanged(QScxmlStateMachine *stateMachine)

## Static Public Members

QScxmlDataModel * | createScxmlDataModel(const QString &pluginKey)

## Protected Functions

| QScxmlDataModel(QScxmlDataModelPrivate &dd, QObject *parent = nullptr)

## Detailed Description

SCXML data models are described in SCXML Specification - 5 Data Model and Data Manipulation. For more information about supported data models, see SCXML Compliance.

One data model can only belong to one state machine.

See also QScxmlStateMachine, QScxmlCppDataModel, and QScxmlNullDataModel.

## Property Documentation

### `[bindable]` stateMachine : QScxmlStateMachine*

Note: This property supports QProperty bindings.

This property holds the state machine this data model belongs to.

A data model can only belong to a single state machine and a state machine can only have one data model. This relation needs to be set up before the state machine is started. Setting this property on a data model will automatically set the corresponding `dataModel` property on the stateMachine.

## Member Function Documentation

### `[explicit]` QScxmlDataModel::QScxmlDataModel(QObject *parent = nullptr)

Creates a new data model, with the parent object parent.

### `[explicit protected]` QScxmlDataModel::QScxmlDataModel(QScxmlDataModelPrivate &dd, QObject *parent = nullptr)

Creates a new data model from the private object dd, with the parent object parent.

### `[static]` QScxmlDataModel *QScxmlDataModel::createScxmlDataModel(const QString &pluginKey)

Creates a data model from a plugin specified by a pluginKey.

### `[pure virtual]` void QScxmlDataModel::evaluateAssignment(QScxmlExecutableContent::EvaluatorId id, bool *ok)

Evaluates the assignment pointed to by id and sets ok to `false` if there was an error or to `true` if there was not.

### `[pure virtual]` void QScxmlDataModel::evaluateForeach(QScxmlExecutableContent::EvaluatorId id, bool *ok, QScxmlDataModel::ForeachLoopBody *body)

Evaluates the foreach loop pointed to by id and sets ok to `false` if there was an error or to `true` if there was not. The body is executed on each iteration.

### `[pure virtual]` void QScxmlDataModel::evaluateInitialization(QScxmlExecutableContent::EvaluatorId id, bool *ok)

Evaluates the initialization pointed to by id and sets ok to `false` if there was an error or to `true` if there was not.

### `[pure virtual]` bool QScxmlDataModel::evaluateToBool(QScxmlExecutableContent::EvaluatorId id, bool *ok)

Evaluates the executable content pointed to by id and sets ok to `false` if there was an error or to `true` if there was not. Returns the result of the evaluation as a boolean value.

### `[pure virtual]` QString QScxmlDataModel::evaluateToString(QScxmlExecutableContent::EvaluatorId id, bool *ok)

Evaluates the executable content pointed to by id and sets ok to `false` if there was an error or to `true` if there was not. Returns the result of the evaluation as a QString.

### `[pure virtual]` QVariant QScxmlDataModel::evaluateToVariant(QScxmlExecutableContent::EvaluatorId id, bool *ok)

Evaluates the executable content pointed to by id and sets ok to `false` if there was an error or to `true` if there was not. Returns the result of the evaluation as a QVariant.

### `[pure virtual]` void QScxmlDataModel::evaluateToVoid(QScxmlExecutableContent::EvaluatorId id, bool *ok)

Evaluates the executable content pointed to by id and sets ok to `false` if there was an error or to `true` if there was not. The execution is expected to return no result.

### `[pure virtual]` bool QScxmlDataModel::hasScxmlProperty(const QString &name) const

Returns `true` if a property with the given name exists, `false` otherwise.

### `[pure virtual]` QVariant QScxmlDataModel::scxmlProperty(const QString &name) const

Returns the value of the property name.

See also setScxmlProperty().

### `[pure virtual]` void QScxmlDataModel::setScxmlEvent(const QScxmlEvent &event)

Sets the event to use in the subsequent executable content execution.

### `[pure virtual]` bool QScxmlDataModel::setScxmlProperty(const QString &name, const QVariant &value, const QString &context)

Sets a the value value for the property name.

The context is a string that is used in error messages to indicate the location in the SCXML file where the error occurred.

Returns `true` if successful or `false` if an error occurred.

See also scxmlProperty().

### void QScxmlDataModel::setStateMachine(QScxmlStateMachine *stateMachine)

Sets the state machine this model belongs to to stateMachine. There is a 1:1 relation between state machines and models. After setting the state machine once you cannot change it anymore. Any further attempts to set the state machine using this method will be ignored.

Note: Setter function for property stateMachine.

See also stateMachine().

### `[pure virtual invokable]` bool QScxmlDataModel::setup(const QVariantMap &initialDataValues)

Initializes the data model with the initial values specified by initialDataValues.

Returns `false` if parse errors occur or if any of the initialization steps fail. Returns `true` otherwise.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### QScxmlStateMachine *QScxmlDataModel::stateMachine() const

Returns the state machine associated with the data model.

Note: Getter function for property stateMachine.

See also setStateMachine().