Qt使⽤QJSEngine执⾏脚本
有时候需要进⾏⼀些计算,程序是使⽤c++来实现的,使⽤c++来进⾏计算不是很灵活,这时候可以使⽤脚本来进⾏计算,这样灵活,且易于扩展。写了⼀个简单的Demo进⾏验证,具体例⼦如下。
#include <QCoreApplication>
#include <QJSEngine>
#include <QString>
#include <QFile>
#include <QTextStream>
#include <string>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// load javascript file. //
std::string strJsFilePath = "./test.js";
QString FileName = QString::fromStdString(strJsFilePath);  //QString(QString::fromLocal8Bit(strJsFilePath.c_str()));
QFile scriptFile(FileName);
if (!scriptFile.open(QIODevice::ReadOnly | QIODevice::Text))
{
printf("Load Js File Failed, FilePath: %s\r\n", strJsFilePath.c_str());
return  -1;
}
QTextStream stream(&scriptFile);
QString JsContents = adAll();
QJSEngine JsEngine;
// 使⽤jsEngine 记载js脚本 //
JsEngine.evaluate(JsContents, FileName);
// get js function. //
QJSValue JsfuncAdd = JsEngine.globalObject().property("Add");
QJSValue JsfuncSub = JsEngine.globalObject().property("Sub");
// 执⾏js中的函数 //
QJSValueList args;
args << 30 << 15;
js脚本开发QJSValue result = JsfuncAdd.call(args);  // call js function add. //
double ResVal = Number();
result = JsfuncSub.call(args);  // call js function sub. //
ResVal = Number();
return  0;
// ();
}
调⽤的js脚本如下,两个函数⼀个进⾏加法运算,⼀个进⾏减法运算。
function Add(a, b)
{
return a + b;
}
function Sub(a, b)
{
return a - b;
}
注意: 需要再pro⽂件中加上 QT += core qml

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。