C++ 调用js 脚本

需求:

使用Qt/C++ 调用js 脚本。Qt 调用lua 脚本性能应该是最快的,但是需要引入第三方库,虽然也不是特别麻烦,但是调用js脚本,确实内置的功能(C++ 调用lua 脚本-CSDN博客)

步骤:

1,pro 引入  

QT+= core  qml

2,调用js 脚本

#include 
#include 
#include 
#include 
#include 
#include 

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QJSEngine jsEngine;

    QFile scriptFile("my.js");
    if (scriptFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
        QTextStream stream(&scriptFile);
        QString scriptCode = stream.readAll();

        jsEngine.evaluate(scriptCode);
        //调用js 函数 并传递参数
        QJSValue addFunction = jsEngine.globalObject().property("process");
        if (addFunction.isCallable()) {
            //16进制原始数据
            QJSValueList args;
            args << "1245";

            QJSValue result = addFunction.call(args);
            if (result.isString()) {
                QString re = result.toString();
                qDebug() << "Result of process function: " << re;
            } else {
                qDebug() << "Error: process function did not return a valid string.";
            }
        } else {
            qDebug() << "Error: 'process' function not found.";
        }

        scriptFile.close();
    } else {
        qDebug() << "Error: Unable to open the script file.";
    }

    return a.exec();
}

3,js 脚本编写

function process(data){
    var temStr = data.substring(0, 2)
    var humStr = data.substring(2,4)

    var temInt = parseInt(temStr,16)
    var humInt = parseInt(humStr,16)
    var re = "temperature:"+temInt.toString()+ " hum:"+humInt.toString()
    return re

}

4,效果

C++ 调用js 脚本_第1张图片

js 和lua对比:

C++ 调用js 脚本_第2张图片

C++ 调用js 脚本_第3张图片

 目前Qt使用现成的js生态还很麻烦,在这种情况下,推荐使用lua脚本。

QML中能使用什么JS库_qml 使用node.js-CSDN博客

你可能感兴趣的:(Qt,c++,js,QML)