需求是这样的:

需要给一个硬件接口测试些东西,用js来调用,js做成不同的独立模块分别测试不同的硬件接口,包括DMD内存,PCIE带宽等等。需要用一个exe来载入这些js文件分别调用测试模块。exe用Qt来做。就只能用QtScript模块了么。

QtScript是一个解释脚本的引擎 符合EMCAScript标准。

 void test_js::ExecuteJsFile(){

     QScriptEngine engine;

     if(JsFilePath.isEmpty()){
qDebug() << "No JavaScript File, Please check it!" <<endl;
return ;
} engine.installTranslatorFunctions(); Interfaces pcie; //pcie public add slot or check lineedit settext
QScriptValue scriptButton = engine.newQObject(&pcie);//生成C++对象的代理脚本对象
engine.globalObject().setProperty("button", scriptButton);//将对象注册到javascript QString fileName(JsFilePath);
QFile scriptFile(fileName);
scriptFile.open(QIODevice::ReadOnly);
QTextStream stream(&scriptFile);
QString contents = stream.readAll();
scriptFile.close(); QScriptValue result = engine.evaluate(contents,fileName); //parsing js format error
if(result.isError()) { qDebug() << "Error File Name is " << fileName << endl;
qDebug() << "Error line number is" << result.property("lineNumber").toInt32() << endl;
qDebug() << "Error Details is " << result.toString() << endl;
return ;
} qDebug() << fileName <<" 's Result: " << result.toInt32() <<endl; }
Interfaces 这个类的头文件是这样的:
 #ifndef INTERFACES_H
#define INTERFACES_H
#include <QtCore/QObject>
class Interfaces : public QObject{
Q_OBJECT
public slots:
void pcie_interface();
};
#endif

对应的实现文件:

 #include <QtCore/QDebug>
#include "test_interfaces.h" using namespace std; void Interfaces::pcie_interface(){
qDebug() << "called fuck!" << endl;
}

下面,javascript文件里面调用pcie_interface()函数,注意,以上pcie_interface函数必须声明成槽函数,不然会报错。

 //helloscript.js
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的更多相关文章

  1. Qt编程之Qt样例表(QSS)

    For a long time, Qt has allowed you to decorate your GUIs with CSS’ish style sheets. Inspired by the ...

  2. Qt编程之qrc文件的链接

    在Qt里面,.qrc文件是一种类似XML结构的文件,用结构化数据描述应用程序所需要的资源位置,例如图片,应用程序的图标文件等.它最终是与.ui文件类似都被通过Qt提供的命令行工具生成对应的qrc_XX ...

  3. Qt编程之UI与控件布局

    当然,大家都知道UI界面可以用Qt Designer在约束环境下设置编辑.ui文件,再将.ui文件转换成对应的ui_XXX.h文件,这头文件中的内容是:用C++语言实现真正的界面布局.uic -o & ...

  4. Qt编程之d指针与q指针

    我们在Qt中可以看到两个宏Q_D和Q_Q这两个红分别是取得d指针和q指针的,d指针指向封装的私有类,q指针指向公共的类.(我的理解类似于回调,回指的意思). 为什么Qt要这样实现呢?下面几个链接中的文 ...

  5. Qt编程之QImage类小结

    最近用Qt做图像处理,以下references是需要用到的 references: http://blog.csdn.net/lyc_daniel/article/details/9193881 ht ...

  6. python QT 编程之路

    pyQT4  的Wheel 下载 https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqt4 python发送GET 或者 POST请求 https://www ...

  7. Qt编程之mapx组件编程

    今天利用组件打包程序写了一些小例子,给大家贴出来,顺便提高一下记忆. 上一篇介绍了直接使用控件和使用控件打包程序对控件进行编程的方法.个人感觉后者编程更方便.不说废话了: 头文件中所需要的类型指针对象 ...

  8. Qt编程之QString 处理换行

    由于之间写过的一篇文章,Unix,windows,Mac里面的换行符不一样,导致处理也不一样,我现在要用QString以行分割(读取的文本文件的里面有换行符).所以要通吃这三种换行符 http://w ...

  9. Qt编程之对QGraphicsItem点击右键弹出菜单

    就是对这个contextMenuEvent 事件重新实现,在这个事件函数中创建菜单,大概就是这样. void MyItem::contextMenuEvent(QGraphicsSceneContex ...

随机推荐

  1. 《Programming WPF》翻译 第6章 5.我们进行到哪里了?

    原文:<Programming WPF>翻译 第6章 5.我们进行到哪里了? WPF提供了资源工具,让我们运用在用户界面中,动态并具有一致性.我们可以在资源字典中存储任意资源,并且可以遍及 ...

  2. 学艺不精,又被shell的管道给坑了

    我用过bash shell,而且时间不短了.但我从来没学过shell,至少没有像C++这么认真去学.平时写些基本的脚本没问题,不懂也可以google.百度.可在2014最后一天,掉坑里了. 其实脚本也 ...

  3. JQuery 动画之 广告

    html页面: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head&g ...

  4. [Regular Expressions] Match the Start and End of a Line

    We can use: ^: match the beginning $: match the end Let's say we have the string like the following: ...

  5. Python模块学习笔记— —time与datatime

    Python提供了多个内置模块用于操作日期时间.像calendar,time,datetime.首先对time模块中最经常使用的几个函数作一个介绍,它提供的接口与C标准库time.h基本一致.然后再介 ...

  6. AfxBeginThread的介绍/基本用法

    AfxBeginThread    用户界面线程和工作者线程都是由AfxBeginThread创建的.现在,考察该函数:MFC提供了两个重载版的AfxBeginThread,一个用于用户界面线程,另一 ...

  7. 传输中文乱码js解决方法

    encodeURI要编码两次 var a="我的"; //编译两次 //window.location.href = "http://127.0.0.1:8080/kab ...

  8. Sublime 学习记录(二) package control 组件

    i.          按Ctrl + ` 调出console (如果有QQ输入法会有冲突需要关闭热键) ii.          粘贴以下代码到底部命令行并运行 import urllib.requ ...

  9. FlexSlider是一个非常出色的jQuery滑动切换插件

    FlexSlider是一个非常出色的jQuery滑动切换插件,它支持所有主流浏览器,并有淡入淡出效果.适合所有初级和高级网页设计师使用.不过很多人都只是使用默认的参数,今天来说说具体的参数来给大家看看 ...

  10. CSS - 关于li中图文混排不能垂直居中的问题

    图片和文字一起放在li标签下不能同时垂直居中   解决办法: 1.设置图片的position:absolute; 2.把文字加上span标签: span{ height:30px;line-heigh ...