Qt编程之QtScript
需求是这样的:
需要给一个硬件接口测试些东西,用js来调用,js做成不同的独立模块分别测试不同的硬件接口,包括DMD内存,PCIE带宽等等。需要用一个exe来载入这些js文件分别调用测试模块。exe用Qt来做。就只能用QtScript模块了么。
QtScript是一个解释脚本的引擎 符合EMCAScript标准。
1 void test_js::ExecuteJsFile(){ 2 3 QScriptEngine engine; 4 5 if(JsFilePath.isEmpty()){ 6 qDebug() << "No JavaScript File, Please check it!" <<endl; 7 return ; 8 } 9 10 11 engine.installTranslatorFunctions(); 12 13 Interfaces pcie; //pcie public add slot or check lineedit settext 14 QScriptValue scriptButton = engine.newQObject(&pcie);//生成C++对象的代理脚本对象 15 engine.globalObject().setProperty("button", scriptButton);//将对象注册到javascript 16 17 QString fileName(JsFilePath); 18 QFile scriptFile(fileName); 19 scriptFile.open(QIODevice::ReadOnly); 20 QTextStream stream(&scriptFile); 21 QString contents = stream.readAll(); 22 scriptFile.close(); 23 24 QScriptValue result = engine.evaluate(contents,fileName); 25 26 27 28 //parsing js format error 29 if(result.isError()) { 30 31 32 qDebug() << "Error File Name is " << fileName << endl; 33 qDebug() << "Error line number is" << result.property("lineNumber").toInt32() << endl; 34 qDebug() << "Error Details is " << result.toString() << endl; 35 return ; 36 } 37 38 qDebug() << fileName <<" 's Result: " << result.toInt32() <<endl; 39 40 }
Interfaces 这个类的头文件是这样的:
1 #ifndef INTERFACES_H 2 #define INTERFACES_H 3 #include <QtCore/QObject> 4 class Interfaces : public QObject{ 5 Q_OBJECT 6 public slots: 7 void pcie_interface(); 8 }; 9 #endif
对应的实现文件:
1 #include <QtCore/QDebug> 2 #include "test_interfaces.h" 3 4 using namespace std; 5 6 void Interfaces::pcie_interface(){ 7 qDebug() << "called fuck!" << endl; 8 }
下面,javascript文件里面调用pcie_interface()函数,注意,以上pcie_interface函数必须声明成槽函数,不然会报错。
1 //helloscript.js 2 button.pcie_interface();
references:
http://blog.csdn.net/guxch/article/details/7656846
http://blog.csdn.net/bbjjqq/article/details/6164291
http://blog.csdn.net/liuhongwei123888/article/details/6162159
Qt编程之QtScript相关推荐
- Qt编程之Xml文件的读取
目录 一.xml的格式说明 二.QT中读取xml的类与常用函数 三.代码思路 四.代码实现 五.结果展示 XML最主要的功能是数据传输,有的时候可以当一个小型的数据库来使用,因为其定义标签高度自由,所 ...
- Linux下QT编程之MQTT实战
应课设要求需要使用MQTT通信协议进行网关开发,所以就花了时间捣鼓一下,也遇到很多的坑所以写了这篇博客记录一下. 1.mqtt服务器有很多在这里我选择EMQ X因为这个是开源并且还有可视化的后台管理便 ...
- Qt编程之QTreeWidget使用方法
ui->treeWidget->setColumnCount(1);ui->treeWidget->setHeaderLabel("中华人民共和国");QT ...
- Qt编程之对QGraphicsItem点击右键弹出菜单
就是对这个contextMenuEvent 事件重新实现,在这个事件函数中创建菜单,大概就是这样. 1 void MyItem::contextMenuEvent(QGraphicsSceneCont ...
- python qt5 增加文本框_Python用PyQt5制作弹出式输入框,Qt图形界面编程之QInputDialog...
前面内容,我们介绍了PyQt5的一些常用基本控件. 温故而知新 计数器QSpinBox使用详解,Python用PyQt5制作图形界面基础控件篇 Python用PyQt5实现多种弹出消息框,QMessa ...
- python高手养成_Python用PyQt5制作颜色对话框,PyQt图形界面编程之QColorDialog
前几篇内容我们介绍了PyQt5中3种常见的标准弹出对话框. 弹出对话框更加方便人机交流 Qt图形界面编程之QFileDialog类,Python用PyQt5制作文件对话框 如何通过Qt界面设置字体属性 ...
- 基于STM32MP157的GPU编程之DRM驱动调试
linux系统GPU编程之DRM编程 背景: framebuffer大家都知道哈,打开/dev/fb0设备节点,然后开辟一段内存(即显存),再mmap,在吧图形数据填充到这段显存里面.怎么填,比如QT ...
- 异步编程之Promise(2):探究原理
异步编程系列教程: (翻译)异步编程之Promise(1)--初见魅力 异步编程之Promise(2):探究原理 异步编程之Promise(3):拓展进阶 异步编程之Generator(1)--领略魅 ...
- cyclicbarrier java_Java并发编程之CyclicBarrier和线程池的使用
原标题:Java并发编程之CyclicBarrier和线程池的使用 下面我们来讲述一下线程池和CyclicBarrier的使用和对比. 一.场景描述 有四个游戏玩爱好者玩游戏,游戏中有三个关卡,每一个 ...
最新文章
- 大势所趋!Octane Raceway开辟VR竞技场
- Spring 配置标签——util标签
- 通过反射获取无参无返回值成员方法并使用
- python 发包爬取中国移动充值页面---可判断手机号是否异常
- new关键字执行过程
- [翻译] UPCardsCarousel
- 1-2+3-4+......+99 除去88的和
- et文件怎么转成excel_图片转PDF怎么转?这些都是文件转换的好方法!
- proteus 仿真软件
- 租房软件隐私保护如同虚设
- 使用Excel 2007绘制甘特图
- 光猫的ip地址段和路由器ip地址段互换
- echarts 3d
- 双击计算机图标无法打开,我的电脑图标打不开_我的电脑双击打不开了
- java怎么对数组中数据进行降序排序?
- 经典神经网络分类器之BP算法和自组织竞争网络
- delphi直接打印jpg文件
- java.lang.AbstractMethodError: org.apache.tomcat.websocket.server.WsSessionListener.sessionCreated(L
- ANSYS Fluent 压力基求解方法
- 基于python的接口录制平台的设计与开发
热门文章
- python中find函数的使用方法_Python教程-String 字符串使用教程
- linux新建java文件夹删除不了怎么办_Linux无法删除文件夹 Device or resource busy
- java 文件大小,如何在Java中获取文件大小
- c语言字符数组赋值_C语言关于结构体字符成员元素赋值的方法
- python pdf转html代码_Python3转换html到pdf的不同解决方案
- viper4android百度云盘,【图片】打造安卓最强音效,ViPER4Android【西南模范吧】_百度贴吧...
- Mysql报错 message from server: Host '61.148.245.96' is not allowed to connect to this MySQL server
- python re 简单实例_python的re正则表达式实例代码
- linux百分比查看文件,Linux 如何查看内存使用率百分比?
- DSP之外部设备连接接口之HPI