使用QScriptEngine计算计算

问题描述:

我正在创建一个图表建模工具,它将Items连接到Tasks。项目有Properties(简单名称/值关系)和任务有Formulas。我打算为用户编写一个用户界面,使用C++语法(即(property1 * property2)/property3)编写QLineEdit a 公式,然后输出结果。当然,公式必须以某种方式解析并计算以输出结果。使用QScriptEngine计算计算

我对此的关注是如果使用QScriptEngine适合于此。我seen that it can be used使用evaluate()执行计算。除了4次“常规”操作(+, - ,*和/)之外,我只预计可能需要sqrt()pow()--但显然,Math在评估字符串中也可用。

而且,我需要存储和恢复这些公式,所以我正在考虑处理它们为QStrings用于这一目的,因为我需要编写/他们从文件中读取/。

您认为这是一个好方法吗?对于这种类型的目标,你认为什么是好阅读?

是的,这种方法很好。我用它来做类似的任务。请注意,QScriptEngine使用JavaScript语法,而不是C++语法。但JavaScript语法功能强大,可满足用户定义公式的常见需求。它支持常规运算符,数学函数,括号,局部变量等。

您可以在QString中存储公式。如果您需要多次执行相同的公式,则应在执行前使用QScriptProgram来编译公式。

+0

谢谢您的回复!实际上,当我提到存储过程时,我忘记提到这个想法是存储公式,然后恢复它在可能不同的上下文中使用,即使用与问题中相同的示例,但具有不同的属性。你有什么洞见可以分享这种情况? – Joum

+0

你可以改变'engine-> globalObject()'。添加到此对象的每个属性对于由此引擎运行的所有公式都可见。 –