QML插件扩展2(基于C++的插件扩展)
上一节介绍了纯QML的插件扩展方式,这种扩展方式基本满足大部分的扩展需求,下面开始介绍比较小众的基于C++的扩展
(一)更新插件工程
1.更新MyPlugin工程下的qmldir文件,加入plugin MyPlugin, 其中MyPlugin是插件的动态库名称,在windows下对应MyPlugin.dll,在linux下多月MyPlugin.so
2.编译MyPlugin插件,生成MyPlugin.dll,这里工程没有copy配置,所以默认dll不会拷贝到E:/T/QMLPlugin/QMLPluginTest/,需手动拷贝,
3. 这个时候,就可以再app里的main.qml下使用,
(二)生成插件描述文件qmltypes
1.在本例中,因为插件跟app放在同一个大目录工程下,所以MyItem会自动高亮,如果不在同一个目录工程,将没有高亮及提示,这是就需要qmltypes描述文件来支持高亮了
2.在本例中,可先将MyPlugin.pro文件从目录工程下一处,在打开重启QtCreator,可看到app的main.qml应用MyItem处有波浪线
3.调用qmlplugindump生成描述文件:
qmlplugindump MyPlugin 1.0 E:\T\QMLPlugin\QMLPluginTest > E:\T\QMLPlugin\QMLPluginTest\MyPlugin\plugin.qmltypes
会自动生成描述文件:

import QtQuick.tooling 1.1 // This file describes the plugin-supplied types contained in the library.
// It is used for QML tooling purposes only.
//
// This file was auto-generated by:
// 'qmlplugindump MyPlugin 1.0 E:\T\QMLPlugin\QMLPluginTest' Module {
Component {
name: "MyItem"
defaultProperty: "data"
prototype: "QQuickItem"
exports: ["MyItem 1.0"]
exportMetaObjectRevisions: [0]
}
}

4. 再次打开MyPlugin工程的,加上这句:typeinfo plugin.qmltypes
附:
1.如果想自己写C++扩展,可以将QtQuick.Controls 源代码研究研究
2. 该节示例代码:https://github.com/youngerking1985/QML_Learn/tree/master/QMLPlugin2
注意:
1. qmlplugindump会区分release和debug,建议直接编译release
2. 如果插件应用了除Qt之外的dll(建议不要这么引用),需要将dll跟qmlplugindump放同一个目录
3. 如果使用了c++编写的dll插件方式, module的名称不能与exe内部注册的mudule重复
QML插件扩展2(基于C++的插件扩展)的更多相关文章
- 自己动手写插件底层篇—基于jquery移动插件实现
序言 本章作为自己动手写插件的第一篇文章,会尽可能的详细描述一些实现的方式和预备知识的讲解,随着知识点积累的一点点深入,可能到了后期讲解也会有所跳跃.所以,希望知识点不是很扎实的读者或者是初学者,不要 ...
- 基于jquery 移动插件的实现
引用谢灿勇 地址 http://www.cnblogs.com/st-leslie/p/6002148.html 一个思路分析:大致上实现的思路有以下两种. 一.判断块是否被按下(mousedown ...
- 基于AOP的插件化(扩展)方案
在项目迭代开发中经常会遇到对已有功能的改造需求,尽管我们可能已经预留了扩展点,并且尝试通过接口或扩展类完成此类任务.可是,仍然有很多难以预料的场景无法通过上述方式解决.修改原有代码当然能够做到,但是这 ...
- 谷歌浏览器中安装.crx扩展名的离线Chrome插件
一.本地拖放安装 1.下载扩展程序/脚本程序至本地计算机: 2.将其直接拖拽到浏览器的“扩展程序”(chrome://chrome/extensions/)页面. 二.解决“只能通过Chrome网上应 ...
- 基于MEF的插件框架之总体设计
基于MEF的插件框架之总体设计 1.MEF框架简介 MEF的全称是Managed Extensibility Framework(MEF),其是.net4.0的组成部分,在3.5上也可以使用.熟悉ja ...
- 基于AppDomain的"插件式"开发
很多时候,我们都想使用(开发)USB式(热插拔)的应用,例如,开发一个WinForm应用,并且这个WinForm应用能允许开发人员定制扩展插件,又例如,我们可能维护着一个WinService管理系统, ...
- 基于jquery的插件turn.js学习笔记
基于jquery的插件turn.js学习笔记 简介 turn.js是一个可以实现3d书籍展示效果的jq插件,使用html5和css3来执行效果.可以很好的适应于ios和安卓等触摸设备. How it ...
- Qt 插件综合编程-基于插件的OpenStreetMap瓦片查看器client(5) 小结
经过不断试用与改动,这个查看器终于还是完毕了设计.实现.查看器,顾名思义,没有编辑功能:说的白一点,仅仅是一个以OpenStreetMap为底图的显示装置罢了.和专业GIS相比,这款基于插件的Open ...
- (2)从实际项目谈起,基于MEF的插件框架之总体设计
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.MEF框架简介 MEF的全称是Managed Extensibil ...
随机推荐
- hexo常用命令笔记
hexo npm install -g hexo npm update -g hexo hexo init 常用 hexo n == hexo new "a new post" 新 ...
- wordpress 删除底部"自豪地采用 WordPress"
找到footer.php文件,删除以下代码即可: <footer id="colophon" class="site-footer" role=" ...
- 【转】HTML-based script和URL-based script两种脚本录制方式
在Web(HTTP/HTML)录制中,有2种重要的录制模式.用户该选择那种录制模式呢?HTML-mode录制是缺省也是推荐的录制模式.它录制当前网页中的HTML动作.在录制会话过程中不会录制所有的资源 ...
- Java Swing 日期控件(转载)
http://www.cnblogs.com/lzy1991/p/5714935.html
- 向网页中写入js和css
向网页中写入js和css 本函数由前辈所写 loadFile: function (url, ftype) { var fileref; if (ftype == "js") { ...
- MySQL中整型数据的差别
bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字).存储大小为 8 个字节. P.S. b ...
- 2DToolkit官方文档中文版打地鼠教程
初始设置 创建一个Unity项目,并导入2D Toolkit插件. 导入完成后,在Project窗口会显示TK2DROOT文件夹(后续版本文件夹名称或许会有变动). 导入素材游戏,你可以从这里下载.下 ...
- 游戏Demo(持续更新中...)
格斗游戏 主要用于联系Unity的动画系统,并加入了通过检测按键触发不同的技能. WASD控制方向,AD为技能1,SW为技能2,右键跳跃,连续单机普通连招. 本来是要用遮罩实现跑动过程中的攻击动作,但 ...
- tomcat 配置SSL
本教程使用 JDK 6 和 Tomcat 7,其他版本类似. 基本步骤: 使用 java 创建一个 keystore 文件 配置 Tomcat 以使用该 keystore 文件 测试 配置应用以便使用 ...
- iptables允许FTP
在iptables里设置允许访问ftp(建立连接,数据传输) 由于ftp服务在建立连接和传输数据时,使用的时不同的端口,建立连接的端口20.21,数据传输的端口可以自定义: 修改ftp配置文件,指定用 ...