C++ 调用js 脚本

需求:

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

步骤:

1,pro 引入  

QT+= core  qml

2,调用js 脚本

#include <QCoreApplication>
#include <QtQml/QJSEngine>
#include <QtQml/QJSValue>
#include <QFile>
#include <QTextStream>
#include <QDebug>

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,效果

js 和lua对比:

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

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

相关推荐

  1. 轻量脚本语言Lua的配置与c++调用

    2024-02-19 06:22:01       42 阅读
  2. thinkphp控制器调用脚本

    2024-02-19 06:22:01       53 阅读
  3. 【游戏引擎 - C#脚本系统】6、C#端调用C++函数

    2024-02-19 06:22:01       53 阅读
  4. js 脚本语言

    2024-02-19 06:22:01       24 阅读
  5. python-调用js代码

    2024-02-19 06:22:01       34 阅读
  6. 游戏辅助从0到1-C++调用游戏Lua脚本实现辅助

    2024-02-19 06:22:01       73 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-19 06:22:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-19 06:22:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-19 06:22:01       87 阅读
  4. Python语言-面向对象

    2024-02-19 06:22:01       96 阅读

热门阅读

  1. 傅雷家书读书札记

    2024-02-19 06:22:01       49 阅读
  2. 最小DFS序

    2024-02-19 06:22:01       55 阅读
  3. macOS 上从源码安装 Nginx

    2024-02-19 06:22:01       51 阅读
  4. docker-compose部署Jenkins/neo4j脚本--持续更新

    2024-02-19 06:22:01       46 阅读
  5. Day37 贪心算法part06

    2024-02-19 06:22:01       49 阅读