Как я могу заставить QJSEngine оценивать функции как sin () или cos (), без необходимости писать Math. перед такой функцией? - PullRequest
0 голосов
/ 04 июля 2019

Я хотел бы оценить математическую формулу, используя QJSEngine, без написания 'Math.'перед ним.

QJSEngine *myEngine=new QJSEngine;
QJSValue example =myEngine->evaluate("Math.sin(45)"); // works
QJSValue example2 =myEngine->evaluate("sin(45)"); //doesn't work
double val= example.toNumber();
double val2=example2.toNumber();

Я нашел обходной путь, который заключается в манипулировании QString до его оценки:

QString expression = "sin(45)";
QJSEngine *myEngine=new QJSEngine;
QJSValue example =myEngine->evaluate(expression); //doesn't work
expression.replace("sin","Math.sin");
QJSValue example2 =myEngine->evaluate(expression); //works
double val= example.toNumber();
double val2=example2.toNumber();

Если кто-то знает подход, который позволяет автоматическую оценку формул,это будет высоко ценится!

...