C++ 调用js 脚本

这篇具有很好参考价值的文章主要介绍了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,效果

C++ 调用js 脚本,Qt,c++,js,QML

js 和lua对比:

C++ 调用js 脚本,Qt,c++,js,QML

C++ 调用js 脚本,Qt,c++,js,QML

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

QML中能使用什么JS库_qml 使用node.js-CSDN博客文章来源地址https://www.toymoban.com/news/detail-836100.html

到了这里,关于C++ 调用js 脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT C++类与QML交互

    C++方负责数据,QML负责显示,先准备工作如下: (1)新建一个数据类,继承至QObject class Cdata : public QObject (2)将有交互关系的数据,加入到类的私有成员中 private: int iNum; QString strEdit; (3)给此成员Q_PROPERTY和相应的函数实现(ALT+回车可自动创建) Q_PROPERTY(int iNum READ getINum W

    2024年02月04日
    浏览(43)
  • Qt开发教程:C++与QML的交互

    Qt是一个功能强大的跨平台应用程序开发框架,支持同时使用C++和QML来开发应用程序。通过C++与QML的交互,我们可以实现更灵活、更强大的应用程序。本文将详细介绍如何在Qt中创建自定义对象、在QML端发送信号并绑定到C++端、在C++端发送信号并绑定到QML端、以及实现QML端直接

    2024年04月16日
    浏览(59)
  • 在Qt中实现C++与QML的交互

    Qt是一个功能强大的跨平台应用程序开发框架,支持同时使用C++和QML来开发应用程序。通过C++与QML的交互,我们可以实现更灵活、更强大的应用程序。本文将详细介绍如何在Qt中创建自定义对象、在QML端发送信号并绑定到C++端、在C++端发送信号并绑定到QML端、以及实现QML端直接

    2024年02月09日
    浏览(42)
  • QML、C++ 和 JS 三者之间的交互

    QML、C++ 和 JS 三者之间的交互是 Qt Quick 应用开发的核心。以下是它们之间交互的常见方式: 从 QML 调用 C++ 函数 要从 QML 调用 C++ 函数,您可以使用 Qt 的 QML 注册机制,例如 qmlRegisterType ,将 C++ 类注册为 QML 类型。 C++ 代码:

    2024年02月07日
    浏览(35)
  • qt笔记之qml和C++的交互系列(一):初记

    code review! —— 杭州 2023-11-16 夜 参考资料: 官方文档《Exposing Attributes of C++ Types to QML》(将C++类暴露给QML) 官方文档《Data Type Conversion Between QML and C++》 官方文档《The Property System》 官方文档《Defining QML Types from C++》(在QML中定义C++类) 官方文档《Overview - QML and C++ Integration》 1.

    2024年02月04日
    浏览(49)
  • 【QT】C++和QML使用多线程优化界面切换卡顿的方法

    qt提供了一种声明式语言qml,可以使用一些可视组件以及这些组件之间的交互来描述用户界面,而c++可以只负责后台逻辑的处理,将界面和后台分离开来,由qml来做UI界面,c++负责后端处理,对我个人来说,这样的方式大大的方便了对界面和逻辑的修改和维护; 由于UI界面是工

    2024年01月19日
    浏览(44)
  • QT JS交互、调用JS、传值

            本文详细的介绍了 QT JS交互、调用JS、传值 的各种操作,包括QT向JS传递String字符串、包括QT向JS传递Int数字、包括QT向JS传递List数组,同时也接收JS向QT返回的List数组、JS向QT返回的Json、JS向QT返回的数字、JS向QT返回的字符串。 本文作者原创,未经允许禁止转载。

    2024年02月05日
    浏览(37)
  • 【QML】QML与cpp交互(一)—— QML直接调用cpp函数

    目录 1、cpp 创建一个类 2、将类对象暴露给QML 3、QML通过对象直接调用cpp函数 类模板如下:  要求:  使用  Q_OBJECT 宏需要继承 QObject 类。Q_OBJECT能够启用信号和槽机制、使用动态属性系统。(使用 Q_OBJECT 宏的类需要通过Qt的元对象编译器(moc)进行处理。) 使用  Q_INVOKABLE 修

    2024年02月02日
    浏览(39)
  • c++和QT子类调用父类方法

    c++调用方式 : 父类名::方法名 QT调用方式 : __super::方法

    2024年02月13日
    浏览(48)
  • Qt+OpenCV调用海康相机SDK采集图像(C++)

    配置环境: Qt5.12.5 OpenCV3.4.9 海康MVS3.1.0 开发工具:QT Creator-4.11.0 1.1)添加海康的库: 将海康SDK库MVSDevelopmentIncludes和MVSDevelopmentLibrarieswin64下复制到自己的工程目录下 然后把库添加到.pro文件中 点击下一步之后就会在.pro文件中出现如下代码 然后在这后面加上以下代码,添

    2024年02月08日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包