Qt Script
旧项目运行在Qt4.x上,要加上一个脚本逻辑,只能上Qt Script.(建议新项目使用QJSEngine)
QT += script
#include <QtScript>
int cpp_func(int a, int b)
{
return a + b;
} QScriptValue cpp_func_wrapper(QScriptContext *ctx, QScriptEngine *eng)
{
int a = ctx->argument(0).toInt32();
int b = ctx->argument(1).toInt32();
return cpp_func(a, b);
}
QScriptEngine engine;
//向js中传递全局可用数据
engine.globalObject().setProperty("name", "liyangyao");
//向js中传递全局可用函数指针 (需要经过一层包装, 符合签名)
QScriptValue cpp_func_ref = engine.newFunction(cpp_func_wrapper);
engine.globalObject().setProperty("cpp_func", cpp_func_ref); //载入js
QString script = readScript(":/script.js");
QScriptValue object = engine.evaluate(script);
if (object.isError())
{
qDebug()<<"line:"<<object.property("lineNumber").toInt32()<<" error:"<<object.toString();
return 0;
} //调用js中的全局函数
qDebug()<<"execute script time:"<<time(NULL);
QScriptValue func = engine.globalObject().property("js_func");
if (func.isValid())
{
QScriptValue result = func.call(object, QScriptValueList()<<17);
qDebug()<<"js_func return->"<<result.toString();
//获取js中的全局变量
qDebug()<<"context="<< engine.globalObject().property("context").toString();
}
else{
qDebug()<<"js_func is not valid";
}
Qt Script的更多相关文章
- Qt的Script、Quick、QML的关系与总结
背景 最近在学QML,感觉也不难,就是一直以来接触 Qt 的脚本类的东西的顺序是Script.Quick1.Declarative.Quick2.QML.那么每一个都是干什么的呢,这些东西搞的我有点混 ...
- Qt工具知多少(一目了然)
一级题目: Qt Designer — 所见即所得的界面设计工具, 可以用拖拽的方式将控件排布在界面上,支持layout, 支持signal/slot编辑. 生成的文件保存为ui格式, ui是xml格 ...
- Qt事件处理机制
研一的时候开始使用Qt,感觉用Qt开发图形界面比MFC的一套框架来方便的多.后来由于项目的需要,也没有再接触Qt了.现在要重新拾起来,于是要从基础学起. Now,开始学习Qt事件处理机制. 先给出原文 ...
- 关于Qt
什么是Qt Qt是一个针对桌面.嵌入式.移动设备的一个跨平台的应用程序开发框架,支持的平台包括Linux.OS X.Windows.VxWorks.QNX.Android.iOS.BlackBerry ...
- 【Qt】关于Qt【转】
什么是Qt Qt是一个针对桌面.嵌入式.移动设备的一个跨平台的应用程序开发框架,支持的平台包括Linux.OS X.Windows.VxWorks.QNX.Android.iOS.BlackBerry ...
- Qt的版本历史
发展史 Qt的第一个商业版本于1995年推出,随后Qt的发展就很快了,下面是Qt发展史上的一 些里程碑,从之前的Qt1.x开始到现在的Qt5.x. Qt1-3 版本 发布日期 1.40 10 July ...
- Qt之QtScript(一)
C++和JavaScript相互通信.今天就学习QtScript模块吧. Qt 包含完全集成的 ECMA 标准脚本引擎.Qt Script 集成了 QObject,为脚本提供了 Qt 的信号与槽 (S ...
- Qt 之 QtScript
前言 前面学习中,很多地方都用到了C++和JavaScript相互通信.今天就学习QtScript模块吧. Qt 包含完全集成的 ECMA 标准脚本引擎.Qt Script 集成了 QObject,为 ...
- 【Qt】测测你对Qt的了解–Qt工具知多少
原文:http://blog.163.com/lijiji_1515/blog/static/1268774462009103101944455/ 你知道Qt都提供了哪些工具吗? 你知道Qt的 ...
随机推荐
- [老老实实学WCF] 第一篇 Hello WCF
老老实实学WCF 第一篇 Hello WCF WCF(Windows Communication Foundation)是微软公司推出的面向服务技术的集大成者,涵盖继承了其之前发布的所有的分布式应用 ...
- Get到一个新技能!!! 不要不要的
刚看到的,交你如何做题!!! 简直6的不行, ----------------------------------------------------------------------------- ...
- /mnt /media /dev 目录区别
/mnt 是被系统管理员使用,手动挂载一些临时媒体设备的目录. /medai 是自动挂载的目录,比如我们的U盘插在ubuntu下回自动挂载,就会在/media下生成一个目录,这个目录就是U盘所在目录, ...
- Codevs 1039 :数的划分
总时间限制: 1000ms 内存限制: 65536kB 描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5: 1 ...
- Codevs 2833 奇怪的梦境
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description Aiden陷入了一个奇怪的梦境:他被困在一个小房子中,墙上有很多按钮,还 ...
- template_12特化与重载
1,重载函数模板f<int*>((int*)pi);//1f<int>((int*)pi);//2上面用int*替换第一个模板的T,用int来替换第二个模板的T.那么将得到两个 ...
- 利用二维矩阵求spanning tree
只做了9个节点的,无权值,使用了n-1个=8个循环,非常麻烦.一级一级判断是否连接,连接及记录所在节点,以后不再使用,确保无回路. 验证后无回路,但只试过几种情况. 代码如下: #include< ...
- 【风马一族_Java】9*9口诀
public class arithmetic { public static void main(String[] args){ sows(9,9); } private static void s ...
- 【风马一族_Android】第4章Android常用基本控件
第4章Android常用基本控件 控件是Android用户界面中的一个个组成元素,在介绍它们之前,读者必须了解所有控件的父类View(视图),它好比一个盛放控件的容器. 4.1View类概述 对于一个 ...
- 【风马一族_Android】代码英语之二 布局文件的Android各个参数
布局文件的Android各个参数 第一类:属性值 true或者 false android:layout _center Hrizontal 水平居中 android:la ...