有時候需要進行一些計算,程序是使用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 = stream.readAll();
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;
QJSValue result = JsfuncAdd.call(args); // call js function add. //
double ResVal = result.toNumber();
result = JsfuncSub.call(args); // call js function sub. //
ResVal = result.toNumber();
return 0;
// return a.exec();
}
調用的js腳本如下,兩個函數一個進行加法運算,一個進行減法運算。
function Add(a, b)
{
return a + b;
}
function Sub(a, b)
{
return a - b;
}
注意: 需要再pro文件中加上 QT += core qml