`
ynp
  • 浏览: 437904 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

QT脚本学习笔记

阅读更多
QT脚本学习笔记

---》QT执行脚本
QScriptEngine myEngine;
QScriptValue three = myEngine.evaluate("function test(){var a=5;return a} test();");
qDebug()<<three.toNumber();//5

---》QT对象到脚本对象转换过程(js访问QT对象)
qt对象--》QScriptValue(qt包装对象)--》脚本对象

#include <QtGui>
#include <QtScript>

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QLabel label("xxx");
QScriptEngine myEngine;
QScriptValue scriptLabel= myEngine.newQObject(&label);//生成qt对象的包装对象
myEngine.globalObject().setProperty("myLabel", scriptLabel);//在脚本全局中声明myLable对象,把qt的包装对象关联到脚本对象
myEngine.evaluate("myLabel.setText('yyyy');");//在脚本中改变属性
qDebug()<<label.text();//yyyy
return app.exec();
}

---》通过信号槽使用 js 中的函数

//QString fun = "(function(){print('hello world')})";  //方式一
QString fun = "f = function (){print('hello world')}"; //方式二
QScriptEngine myEngine;
QScriptValue sctiptFun = myEngine.evaluate(fun);

QPushButton button("click");
qScriptConnect(&button,SIGNAL(clicked()),myEngine.globalObject(),sctiptFun);
button.show();

---》qt直接调用js中的方法
QString script = "var obj = {test :function(){print('hello world');}}; ";
QScriptEngine myEngine;
myEngine.evaluate(script);
QScriptValue global = myEngine.globalObject();
QScriptValue fun = global.property("obj").property("test");
fun.call(global);

---》js中连接信号与槽
QScriptEngine myEngine;
//QString scriptStr("function test(){print('hello world');} btn.clicked.connect(this,test) ");
QString scriptStr("var obj = {test :function(){print('hello world');}}; btn.clicked.connect(obj,'test') ");
QPushButton button("click");
QScriptValue btn = myEngine.newQObject(&button);
myEngine.globalObject().setProperty("btn",btn);
myEngine.evaluate(scriptStr);
button.show();

参考:http://blog.163.com/jx_yp/blog/static/119704459201111145400203/
http://blog.163.com/jx_yp/blog/static/119704459201111145411698/
http://blog.163.com/jx_yp/blog/static/11970445920111114542128/
分享到:
评论

相关推荐

    Qt webkit 学习笔记

    ### Qt webkit 学习笔记知识点详述 #### 一、Qtwebkit简介 **1. Qt** Qt 是一款跨平台的应用程序开发框架,通常被称为 C++ 组件工具箱。它被广泛应用于各种知名的软件和产品中,比如 KDE 桌面环境、Opera 浏览器...

    QT开发的笔记本源代码notepad.rar

    这个项目可能是为了教学目的或个人实践而创建的,因为它提供了一个基础的文本编辑器实现,对于学习QT编程和UI设计是很好的起点。 源代码中的主要文件可能包括以下几个部分: 1. **主窗口类**:通常以`.cpp`和`.h`...

    基于QT的任务管理脚本工具 笔记记录功能 倒计时功能

    基于QT的脚本工具:效率提升助手 功能概述 本工具旨在提升工作和学习效率,具备以下功能: 任务管理:用户可以添加、编辑和删除任务。 倒计时功能:为当前任务设置倒计时,提醒用户任务剩余时间。 笔记记录:提供...

    QT.rar_QT学习资料

    12. **QT脚本支持**:QT与QScriptEngine一起,可以嵌入JavaScript,使得应用更具有动态性和可扩展性。 "QT学习笔记_经验篇.doc"文档很可能会深入讲解这些概念,通过实例演示和实践经验分享,帮助读者快速掌握QT开发...

    33Qt笔记一

    ### Qt5 入门知识点详解 #### 1.1 安装及测试 **1.1.1 在Windows上安装** ...以上知识点仅为Qt5入门级别的部分概念和技术细节,学习Qt还需要深入理解其背后的原理和技术栈。希望这份笔记能够为初学者提供一些帮助。

    I.MX6U交叉编译Qt项目-思维导图-学习笔记-基于正点原子阿尔法开发板

    首先,将交叉编译工具fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh拷贝至Ubuntu系统并修改其权限,然后运行脚本安装工具,默认目录为/opt/fsl-imx-x11/4.1.15-2.1.0。...

    编译 ARM 平台 Qt5.12.9 源码-思维导图-学习笔记-基于正点原子阿尔法开发板

    正点原子提供了简化配置过程的脚本autoconfigure.sh,下载并修改路径后,赋予脚本执行权限并执行脚本进行配置。在此之前需确保已安装g++编译器。配置成功后,继续安装Python环境并执行make -j 16进行并行编译,最后...

    Yate学习笔记

    【Yate学习笔记】 Yate,全称Yet Another Telephony Engine,是一款先进的网络电话引擎,致力于提供一个可扩展且高效的电话服务解决方案。本篇笔记主要涵盖Yate的基础知识和开发要点。 ### 安装与运行 在Ubuntu...

    QT笔记(节选)具体图片等下载资源

    13. **脚本支持**:QtScript(现为废弃)和QJSEngine(基于JavaScript)允许在Qt应用中集成脚本语言,增强应用的灵活性。 14. **调试工具**:Qt Creator提供了强大的调试工具,如源代码级调试、性能分析器等,帮助...

    Qt报表软件介绍cutereport

    学习Cutereport的过程中,结合源代码和笔记,可以深入理解其设计理念和实现方式,有助于提升Qt开发能力和报表设计技能。通过实践和调试源代码,开发者可以更好地掌握Qt和Cutereport的高级特性,从而在实际项目中灵活...

    基于Qt开发的简易笔记系统,通过XML存储文件.zip

    毕业设计通常是指大学生在结束学业前完成的一个大型项目,这可能意味着这个笔记系统是一个学术或教育性质的作品,可能包含了对C++和Qt框架的深入学习和实践。 至于压缩包子文件的文件名称列表“9876”,由于没有...

    我的笔记-qt-c++-c#-后面持续更新.7z

    这个压缩包显然包含了作者在这些主题上的学习笔记,可能是教程、代码示例、问题解决方案或者个人心得。 【描述】"只要是我的一些笔记,关于qt,c#,C++的,用来做个备份,防止本地不小心删掉了" 说明了这些笔记的主要...

    QT聚类(Quality Threshold Clustering)

    QT聚类,全称为Quality Threshold Clustering,是一种无监督学习的聚类算法,主要用于数据集的划分,将相似的数据点归为一类。该方法在处理高维数据或大规模数据集时,表现出一定的优势,因为它不需要预先设定聚类的...

    oneNote笔记(包含C++、LINUX、bat脚本等)

    总的来说,这个笔记集合为学习C++编程、Linux系统管理、Windows批处理脚本和软件开发中的跨平台集成提供了丰富的资源。通过深入研究这些笔记,你可以提升自己的IT技能,并在实际工作中应用这些知识。

    selfimpr学习笔记合集(20101212)

    这是一个名为"selfimpr学习笔记合集(20101212)"的压缩包文件,其中包含了作者关于多种编程语言和相关技术的个人学习笔记。这些笔记涵盖了Python、PHP、Java、JavaScript和C这五种语言,以及可能涉及的各种框架和...

    支持QT的文件系统

    开发者可以通过阅读这些资料来学习如何配置内核、构建QT库以及创建和烧录文件系统映像。 总之,构建一个支持QT的嵌入式Linux文件系统是一个复杂的过程,涉及多个技术环节,包括内核裁剪、QT移植、驱动开发、文件...

    ARM开发学习笔记

    根据提供的信息,我们可以总结出以下相关的ARM开发知识点: ...通过以上知识点的学习与理解,开发者可以更好地掌握ARM开发的相关技术和实践技巧,特别是在构建基于ARM架构的应用程序和服务时能够更加得心应手。

    qt-fastart,视频描述信息前置小工具

    在开发过程中,如果你需要集成类似的功能到自己的应用程序中,可以参考QT-Faststart的源代码,学习如何使用Qt库来读取、修改和写入MP4文件的元数据。同时,Qt库提供了丰富的API,可以方便地处理音视频流、解码、编码...

    zedboard学习笔记

    zedboard学习笔记详细涵盖了从基础入门到高级应用的多个方面,包括软件环境的搭建、硬件平台的配置、自定义IP的开发、Linux内核的引导与编译、驱动程序的编写以及图形用户界面(GUI)的开发与应用等多个环节,同时在...

Global site tag (gtag.js) - Google Analytics