为Qt SCXML创建自定义数据模型

时间:2016-04-14 14:43:05

标签: qt scxml

我使用Qt和SCXML state machine。我想通过Qt SCXML使用原生QScxmlStateMachine解释器。但是,Qt仅支持SCXML的Null,EcmaScript和C ++数据模型。我的状态机有一个自定义数据模型。

我想继承QScxmlDataModel来支持我的状态机。我可以看到实施setup()hasScxmlProperty()setScxmlProperty()scxmlProperty()函数如何允许从数据模型中设置/获取值。

但是,我不知道如何制作它,以便expressions和其他特定于模特的项目 - 例如<transition cond="..."><script>...</script> - 将在我的自定义数据模型。

如何创建一个自定义数据模型,知道如何做更多只是获取/设置属性?

1 个答案:

答案 0 :(得分:4)

您需要覆盖virtual QString evaluateToString(QScxmlExecutableContent::EvaluatorId id, bool *ok) = 0; virtual bool evaluateToBool(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 void evaluateAssignment(QScxmlExecutableContent::EvaluatorId id, bool *ok) = 0; virtual void evaluateInitialization(QScxmlExecutableContent::EvaluatorId id, bool *ok) = 0; virtual bool evaluateForeach(QScxmlExecutableContent::EvaluatorId id, bool *ok, ForeachLoopBody *body) = 0;

的各种评估函数
<tr>

它们都被排除在文档之外,但您可以看到它们sprintfc

我的猜测原因是Qt SCXML模块以here发布,API可能会在未来发生变化。