本页内容

QScxmlNullDataModel Class

QScxmlNullDataModel 类是Qt SCXML 状态机的空数据模型。更多内容...

标题: #include <QScxmlNullDataModel>
CMake: find_package(Qt6 REQUIRED COMPONENTS Scxml)
target_link_libraries(mytarget PRIVATE Qt6::Scxml)
qmake: QT += scxml
继承自: QScxmlDataModel

公共函数

QScxmlNullDataModel(QObject *parent = nullptr)
virtual ~QScxmlNullDataModel()

重新实现的公共函数

virtual void evaluateAssignment(QScxmlExecutableContent::EvaluatorId id, bool *ok) override
virtual void evaluateForeach(QScxmlExecutableContent::EvaluatorId id, bool *ok, QScxmlDataModel::ForeachLoopBody *body) override
virtual void evaluateInitialization(QScxmlExecutableContent::EvaluatorId id, bool *ok) override
virtual bool evaluateToBool(QScxmlExecutableContent::EvaluatorId id, bool *ok) override
virtual QString evaluateToString(QScxmlExecutableContent::EvaluatorId id, bool *ok) override
virtual QVariant evaluateToVariant(QScxmlExecutableContent::EvaluatorId id, bool *ok) override
virtual void evaluateToVoid(QScxmlExecutableContent::EvaluatorId id, bool *ok) override
virtual bool hasScxmlProperty(const QString &name) const override
virtual QVariant scxmlProperty(const QString &name) const override
virtual void setScxmlEvent(const QScxmlEvent &event) override
virtual bool setScxmlProperty(const QString &name, const QVariant &value, const QString &context) override
virtual bool setup(const QVariantMap &initialDataValues) override

详细说明

此类实现了SCXML 规范 - B.1《空数据模型》中所述的空数据模型。将<scxml> 元素的datamodel属性设置为"null" ,表示不存在底层数据模型,但仍可使用某些可执行内容,例如In(...) 或<log> 。

另请参阅 QScxmlStateMachine 和QScxmlDataModel 。

成员函数文档

[explicit] QScxmlNullDataModel::QScxmlNullDataModel(QObject *parent = nullptr)

创建一个新的“Qt SCXML ”空数据模型,其父对象为“parent ”。

[virtual noexcept] QScxmlNullDataModel::~QScxmlNullDataModel()

销毁数据模型。

[override virtual] void QScxmlNullDataModel::evaluateAssignment(QScxmlExecutableContent::EvaluatorId id, bool *ok)

重写了:QScxmlDataModel::evaluateAssignment (QScxmlExecutableContent::EvaluatorId id, bool *ok)。

抛出错误并将ok 设置为false ,因为空数据模型无法评估赋值操作。

[override virtual] void QScxmlNullDataModel::evaluateForeach(QScxmlExecutableContent::EvaluatorId id, bool *ok, QScxmlDataModel::ForeachLoopBody *body)

重写了:QScxmlDataModel::evaluateForeach (QScxmlExecutableContent::EvaluatorId id, bool *ok, QScxmlDataModel::ForeachLoopBody *body)。

由于空数据模型无法评估<foreach> 块,因此会抛出错误并将ok 设置为false 。

[override virtual] void QScxmlNullDataModel::evaluateInitialization(QScxmlExecutableContent::EvaluatorId id, bool *ok)

重写:QScxmlDataModel::evaluateInitialization (QScxmlExecutableContent::EvaluatorId id, bool *ok)。

抛出错误并将ok 设置为false ,因为空数据模型无法初始化数据。

[override virtual] bool QScxmlNullDataModel::evaluateToBool(QScxmlExecutableContent::EvaluatorId id, bool *ok)

重写:QScxmlDataModel::evaluateToBool (QScxmlExecutableContent::EvaluatorId id, bool *ok)。

评估由id 所指向的可执行内容,并将是否发生错误记录在ok 中。以布尔值返回评估结果。空数据模型可以评估指令In(...) ,因此这可能会返回实际值,而非错误。

[override virtual] QString QScxmlNullDataModel::evaluateToString(QScxmlExecutableContent::EvaluatorId id, bool *ok)

重写:QScxmlDataModel::evaluateToString (QScxmlExecutableContent::EvaluatorId id, bool *ok)。

评估由id 指向的可执行内容,并在ok 中记录是否发生错误。将评估结果作为字符串返回。空数据模型可以评估<log> 元素,因此这可能会返回实际值,而非错误。

[override virtual] QVariant QScxmlNullDataModel::evaluateToVariant(QScxmlExecutableContent::EvaluatorId id, bool *ok)

重写:QScxmlDataModel::evaluateToVariant (QScxmlExecutableContent::EvaluatorId id, bool *ok)。

评估由id 所指向的可执行内容,并在ok 中记录是否发生错误。由于这是空数据模型,任何评估实际上都会导致错误,此时ok 将被设置为false 。返回一个空的QVariant 。

[override virtual] void QScxmlNullDataModel::evaluateToVoid(QScxmlExecutableContent::EvaluatorId id, bool *ok)

重写:QScxmlDataModel::evaluateToVoid (QScxmlExecutableContent::EvaluatorId id, bool *ok)。

评估由id 所指向的可执行内容,并在ok 中记录是否发生错误。由于这是空数据模型,任何评估实际上都会导致错误,此时ok 将被设置为false 。

[override virtual] bool QScxmlNullDataModel::hasScxmlProperty(const QString &name) const

重写了:QScxmlDataModel::hasScxmlProperty(const QString &name) const。

返回false ,因为空数据模型不支持属性。

[override virtual] QVariant QScxmlNullDataModel::scxmlProperty(const QString &name) const

重写了:QScxmlDataModel::scxmlProperty(const QString &name) const。

返回一个无效的变体,因为 null 数据模型不支持属性。

另请参阅 setScxmlProperty()。

[override virtual] void QScxmlNullDataModel::setScxmlEvent(const QScxmlEvent &event)

重写了:QScxmlDataModel::setScxmlEvent(const QScxmlEvent &event)。

实际上不会设置 `event`,因为空数据模型不处理事件。

[override virtual] bool QScxmlNullDataModel::setScxmlProperty(const QString &name, const QVariant &value, const QString &context)

重写了:QScxmlDataModel::setScxmlProperty (const QString &name, const QVariant &value, const QString &context)。

返回false ,因为空数据模型不支持属性。

另请参阅 scxmlProperty()。

[override virtual invokable] bool QScxmlNullDataModel::setup(const QVariantMap &initialDataValues)

重写了:QScxmlDataModel::setup(const QVariantMap &initialDataValues)。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.