gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 13:12:29 26 4
gpt4 key购买 nike

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

我想子类化 QScxmlDataModel 支持我的状态机。我可以看到如何实现 setup() , hasScxmlProperty() , setScxmlProperty() ,和scxmlProperty()函数将允许从数据模型中设置/获取值。

但是,我不知道如何做到 expressions以及其他特定于型号的项目,例如 <transition cond="..."><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;

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

我猜测这是因为 Qt SCXML 模块发布为 Technology Preview并且 API 将来可能会发生变化。

关于qt - 为 Qt SCXML 创建自定义数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36626534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com