QT与JavaScript之QT6应用程序与JavaScript脚本集成开发:C++应用程序能与JavaScript实现相互调用吗?
简介
QT6框架中提供了JavaScript引擎类型QJSEngine ,可用于实现 C++应用程序和JavaScript代码之间的相互调用。
目录
什么是 ECMAScript ?
JavaScript 又是什么呢?
QT框架中的JavaScript
QT应用程序中使用 JavaScript表达式
QT应用程序中执行 JavaScript脚本
QT应用程序中JavaScript创建窗口
正文
什么是 ECMAScript ?
ECMAScript 是一个语言规范(Language Specification),就是一种脚本语言规范。目前这个语言规范由Ecma Internationa这个组织在维护。
对ECMAScript标准规范有兴趣的读者可以看一下这个页面。
https://www.ecma-international.org/publications-and-standards/standards/ecma-262/
中文介绍可参考:
JavaScript 又是什么呢?
JavaScript 是ECMAScript 这种语言规范的一种具体实现。当前存在几种JavaScript实现,比如Apple的JavaScriptCore,Google的v8 这两种是比较有名气的。
JavaScriptCore | Apple Developer Documentation
Chromium/Chrome使用的JavaScript引擎就是 v8 。
QT框架中的JavaScript
QT框架中推荐使用的JavaScript引擎是JavaScriptCore,已经在全面改造之后集成到QT框架中去了,QML模块使用的JavaScript引擎就是这个版本。
如果想在C++代码中使用 JavaScript的功能,可以这么做。
C+
+应用程序使用JavaScript
QT应用程序中使用 JavaScript表达式
QT应用程序中可以使用 JavaScript表达式并进行评估。

C++中评估JavaScript表达式
QT应用程序中执行 JavaScript脚本
QT应用程序中也可以执行 JavaScript脚本,必须先读取脚本文件然后在执行evalucate()函数。
main.js :
function add(a, b) {
console.log(a + " + " + b + " = " + (a + b))
return a + b
}
C++代码:

读取JavaScript文件

C++执行JavaScript 脚本
QT应用程序中JavaScript创建窗口
QT应用程序中可以通过JavaScript创建窗口。
butianyunwidget.h文件:

C++代码:ButianyunWidget
butianyunwidget.js 文件:
var window = new ButianyunWidget();
window.visible = true;
C++代码:

C++代码
运行效果如下所示:

JavaScript 创建的窗口
总结
本文介绍了如何通过QT6框架中提供的JavaScript引擎类型QJSEngine 实现 C++应用程序和JavaScript代码之间的相互调用。
如果您认为这篇文章对您有所帮助,请您一定立即点赞+喜欢+收藏,本文作者将能从您的点赞+喜欢+收藏中获取到创作新的好文章的动力。如果您认为作者写的文章还有一些参考价值,您也可以关注这篇文章的作者。
QT与JavaScript之QT6应用程序与JavaScript脚本集成开发:C++应用程序能与JavaScript实现相互调用吗?的更多相关文章
- 马上着手开发Mac应用程序
你是否想要开发 Mac 应用程序却又不知道从哪里入手?本路线图提供了 Mac 应用程序开发的绝佳起点,即使你已经是一个 iOS 开发专家,本路线图对你依然适用.Apple让开发应用程序和提交应用程序到 ...
- 使用uView UI+UniApp开发微信小程序--微信授权绑定和一键登录系统
在前面随笔<使用uView UI+UniApp开发微信小程序>和<使用uView UI+UniApp开发微信小程序--判断用户是否登录并跳转>介绍了微信小程序的常规登录处理和验 ...
- 【开源】Westore Cloud 发布- 没后端没SQL没DBA,只需 javascript 开发云端小程序
Westore Cloud - 隐形云,NoBackEnd,NoSql,HiddenDB 好的设计便是感觉不到设计的存在 开发小程序,但是:没有后端!没有运维!没有 DBA!没有域名!没有证书!没有钱 ...
- 使用cocoa捕获dock栏中的“退出”事件,解决qt开发的应用程序退出异常的问题
最近在移植一个QT开发的应用程序到mac平台,由于我们的应用在退出时需要释放一些资源,不然在mac系统会报崩溃事件,但是当用户使用dock栏上面的退出功能时,没有捕获到这个退出事件,导致无法正常退出. ...
- QT编译发布程序后报错如缺少dll、“应用程序无法正常启动(0xc000007b)”的可能解决方法
QT编译发布程序后报错如缺少dll.“应用程序无法正常启动(0xc000007b)”的可能解决方法 最近项目要用qt,因为初学没有经验,遇到些小问题常常没什么头绪,也查不到解决方法,刚刚还因为低端错误 ...
- 使用 JavaScript 中的 window 对象执行计时操作,完成一个抽奖程序
查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的 window 对象执行计时操作,完成一个抽奖程序 实现思路: 在 HTML 页面中放置背景图片.转盘和指针 3 张图片,并设置指 ...
- 常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript
常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript Javascript现阶段还不适合用来做独立开发,它的天下还是在web应用 ...
- electron之Windows下使用 html js css 开发桌面应用程序
1.atom/electron github: https://github.com/atom/electron 中文文档: https://github.com/atom/electron/tree ...
- 如何用TypeScript开发微信小程序
微信小程序来了!这个号称干掉传统app的玩意儿虽然目前处于内测阶段,不过目前在应用号的官方文档里已经放出了没有内测号也能使用的模拟器了. 工具和文档可以参考官方文档:https://mp.weixin ...
- 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介
前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)&g ...
随机推荐
- [oeasy]python0097_苹果诞生_史蒂夫_乔布斯_沃兹尼亚克_apple_I
苹果诞生 回忆上次内容 上次时代华纳公司 凭借手中的影视ip和资本 吞并了雅达利公司 此时 雅达利公司 曾经开发过pong的 优秀员工 乔布斯 还在 印度禅修 寻找自我 看到游戏行业 蓬勃发展 乔布斯 ...
- C# 常用类和命名空间
Array类 用括号声明数组是C#中使用Array类的记号.在后台使用C#语法,会创建一个派生于抽象基类Array的新类.这样,就可以使用Array类为每个C#数组定义的方法和属性了. Array类实 ...
- 题解:CF1971B Different String
题解:CF1971B Different String 题意 给予你一个字符串 \(s\),保证 \(s\) 的长度小于等于 \(10\). 任意排列 \(s\),使其与原 \(s\) 不同. 判断是 ...
- Django模型中的save方法 精讲
两种方法定义在Django模型中的save方法有不同的参数处理方式. 第一种方法: def save(self, *args, **kwargs): super().save(*args, **kwa ...
- Windows cifs共享给linux
Windows 搜索启用或关闭Windows功能 启用cifs 共享文件并添加普通用户 解禁guest用户和设置本地策略 右键计算机 win+r输入secpol.msc 将guest删除 修改网络访问 ...
- 图书《数据资产管理核心技术与应用》核心章节节选-3.1.2. 从Spark 执行计划中获取数据血缘
本文节选自清华大学出版社出版的图书<数据资产管理核心技术与应用>,作者为张永清等著. 从Spark 执行计划中获取数据血缘 因为数据处理任务会涉及到数据的转换和处理,所以从数据任务中解析血 ...
- DrawIO安装及基本使用教程
1.DrawIO简介 DrawIO 是一款开源免费且功能强大的绘图工具,可以用于绘制流程图.组织结构图.网络图.UML图等各种类型的图表: DrawIO 支持多种文件格式,包括XML.PNG.SVG等 ...
- SpringWebflux详细讲解
1.背景 2.Spring5 框架新功能(Webflux) 2.1.SpringWebflux 介绍 (1)webFlux是 Spring5 添加的新模块,用于 web 的开发,功能和 SpringM ...
- 用海豚调度器定时调度从Kafka到HDFS的kettle任务脚本
在实际项目中,从Kafka到HDFS的数据是每天自动生成一个文件,按日期区分.而且Kafka在不断生产数据,因此看看kettle是不是需要时刻运行?能不能按照每日自动生成数据文件? 为了测试实际项目中 ...
- Linux驱动小技巧 | 利用DRIVER_ATTR实现调用内核函数
1. 前言 很多朋友在调试驱动的时候,都会遇到这样一个场景: 修改一个参数,然后调用某个内核中的函数. 比如将某个gpio的值拉高/拉低,修改某个寄存器的值等等. 如果每一个参数都通过字符设备的ioc ...