使用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
来编译公式。
谢谢您的回复!实际上,当我提到存储过程时,我忘记提到这个想法是存储公式,然后恢复它在可能不同的上下文中使用,即使用与问题中相同的示例,但具有不同的属性。你有什么洞见可以分享这种情况? – Joum
你可以改变'engine-> globalObject()'。添加到此对象的每个属性对于由此引擎运行的所有公式都可见。 –