我正在将Qt与SCXML状态机一起使用。我想通过使用本机Qt SCXML解释器QScxmlStateMachine
。但是,Qt仅支持SCXML的Null,EcmaScript和C ++数据模型。我的状态机有一个自定义数据模型。
我想继承QScxmlDataModel
支持我的状态机。我可以看到如何实现setup()
,hasScxmlProperty()
,setScxmlProperty()
,和scxmlProperty()
功能将允许设置/从数据模型获取值。
但是,我看不到如何做到这一点,以便可以在我的自定义数据模型中正确评估表达式和其他特定于模型的项目(例如with<transition cond="...">
或with)<script>...</script>
。
我如何制作一个自定义数据模型,该模型不仅仅可以获取/设置属性,还可以做更多的事情?
您将需要覆盖的各种评估功能QScxmlDataModel
:
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;
它们均已从文档中排除,但您可以在此处查看它们。
我猜这是因为Qt SCXML模块是作为Technology Preview发布的,并且该API将来可能会更改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句