我正在创建一个将Items
连接到Tasks
的图表建模工具。项目具有Properties
(简单名称/值关系),任务具有Formulas
。我打算为用户生成一个UI,使用C ++语法(即QLineEdit
)在(property1 * property2)/property3
公式中编写,然后输出结果。当然,必须以某种方式解析和计算公式以输出结果。
我对此的担忧是,使用QScriptEngine
是否合适。我seen that it can be used使用evaluate()
执行计算。除了4个“常规”操作(+, - ,*和/)之外,我只预计可能需要sqrt()
和pow()
- 但显然,Math
也可以在评估字符串。
另外,我需要存储和恢复这些公式,所以我考虑将它们作为QStrings
用于此目的,因为我需要在文件中写入/读取它们
你认为这是一个好方法吗?对于这类目标,你有什么建议?
答案 0 :(得分:1)
是的,这种方法很好。我用它来完成类似的任务。请注意,QScriptEngine
使用JavaScript语法,而不是C ++语法。但JavaScript语法功能强大,可满足用户定义公式的常规需求。它支持常规运算符,数学函数,括号,局部变量等。
您可以在QString
中存储公式。如果需要多次执行相同的公式,则应在执行前使用QScriptProgram
编译公式。