需求是这样的:

需要给一个硬件接口测试些东西,用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》翻译 第8章 4.关键帧动画

    原文:<Programming WPF>翻译 第8章 4.关键帧动画 到目前为止,我们只看到简单的点到点的动画.我们使用了To和From属性或者By属性来设计动画--相对于当前的属性值.这 ...

  2. ArcGIS API for Silverlight开发入门

    你用上3G手机了吗?你可能会说,我就是喜欢用nokia1100,ABCDEFG跟我 都没关系.但你不能否认3G是一种趋势,最终我们每个人都会被包裹在3G网络中.1100也不是一成不变,没准哪天为了打击 ...

  3. linux xargs 使用

    xargs是一条Unix和类Unix操作系统的常用命令.它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题[1]. 例如,下面的命令: rm `find /path -type ...

  4. UML--核心元素之包

    包是一种容器,如同文件夹一样. 包是UML非常常用的一个元素,它最主要的作用就是容纳并为其他元素分类.包可以容纳用例.业务实体.类图等,也包含子包. 分包的原则 1.如果将元素分为三个包A.B.C,那 ...

  5. java package 重命名时注意事项

    如果要对包重命名时,需要关注以下方面: 1. java关联类里的重命名(这个一般通过开发工具会自动修正,如eclipse) 2.配置文件,如原先配置为com.abc,现在更名为com.abc123,这 ...

  6. c++ 05

    一.单例模式 二.成员指针 class Student { public:   string m_name;   void print (void) { ... } }; 1.指向成员变量的指针 成员 ...

  7. ASCII码、base64编码 为什么有的代码要用 base64 进行编码?

    百度百科 ASCII码:http://baike.baidu.com/link?url=bNtzytBhlSUt_l3pwpfICxCxqgAfqsBMaeWX6QF7gH46Tg4pQtKM2aAV ...

  8. 数据库中的索引Index

    索引就像一本书的目录,而书中的索引是对一个词语的列表,其中注明了包含各个词的页码.数据库中的索引 是某一个表中一列或者若干列值的集合和相应的只想表中物理标识这些值的数据页的逻辑指针清单. 索引的作用: ...

  9. 移动支付之智能IC卡与Android手机进行NFC通信

    本文来自http://blog.csdn.net/hellogv/ .引用必须注明出处.        眼下常见的智能IC卡执行着JavaCard虚拟机.智能IC卡上能够执行由精简后的Java语言编写 ...

  10. Codeforces 67C Sequence of Balls 编辑距离 dp

    题目链接:点击打开链接 有一个交换操作比較特殊,所以记录每一个点距离自己近期的那个字符的位置 然后交换就相当于把第一行要交换的2个字符 之间的字符都删掉 把第二行要交换的2个字符 之间的字符都插入第一 ...