一个关于qml插件的文章-转
制作Qt Quick 2 Extension Plugin的几个问题-Qt
经过几天的google和爬帖,加上自己的摸索,终于把新版的Qt Quick 2制作插件的问题给弄了个明白,工作流可以建立了。几个让我费了很多力气的问题,在此记录一下。
我们最终的目标是实现插件在Qt Creator中的顺利载入,并能够实现代码补全。
Point 1.
Qt Quick 2 使用qmlsecene而不像第一代使用qmlviewer(我很喜欢!因为调试功能很全,而qmlsecene就是光杆一个),插件的编译类型要选择对应的MinGW+Release方式生成。
Point 2.
在项目文件(.pro)中修改,假设要载入的插件放在pro文件所在文件夹中的plugin文件夹下面,具体方法:
qmlproject:
importPaths: [ "./plugin" ]
c++ project:
QML_IMPORT_PATH = plugin
Point 3.
修改过后, 就要注意看自己创建插件时指定的uri了。譬如cn.iyinchao,就要将编译好的dll譬如叫plugin.dll连同qmldir文件一同复制到对应的plugin/cn/iyinchao/下面。这样,在Qt Creator中就可以使用
import cn.iyinchao 1.0
导入插件。并且运行成功。
Point 4.
但是,当我使用自定义类,姑且叫它MyItem,仍然无法代码补全,下面有红波浪线(程序猿最怕看到啦)。帖子爬啊爬,终于在官方文档中看到,使用qmlplugindump,生成插件的信息(.qmltypes)就可以让Qt Creator正确读取typeinfo信息并进行补全了。打开命令行,运行:
qmlplugindump.exe -notrelocatable [cn.iyinchao 1.0] [path/to/plugin] > [path/to/plugin/cn/iyinchao/Name.qmltypes]
执行完,就可生成qmltypes文件。编辑qmldir文件,加入
typeinfo Name.qmltypes
就可以让Qt Creator实现代码补全了。
-notrelocatable 这点很重要,不加的话生成的qmltypes文件在我这里无效(这个知识找的很辛苦啊)
Final.
至此,我们可以正确地导入插件,并且让Qt Creator对我们的插件进行代码提示了。
—————————————————————————————————-
EDIT:
发现qmlsecene可以打开一些debug模式的。参见qmlsecene的源代码
例如使用slowAnimation:
qmlscene.exe –slow-animations -I [path/to/your/plugin] [path/to/the/qml/file.qml]
为什么加入了-notrelocatable之后,qmltypes起作用了呢?打开文件,发现只有一处不同:
未加入:
exports: ["MyModule 1.0"]
加入后:
exports: ["cn.iyinchao/MyModule 1.0"]
估计是给出了uri,与import的uri相符,才找到了对应的对象MyModule。只是猜想
一个关于qml插件的文章-转的更多相关文章
- 自己diy一个jquery分页插件
js基础学习过程中,期间经历换工作的各种面试,很多面试官问过:有没有写过jquery插件?等类似问题. 就个人而言,关于jquery插件的文章确实看过不少,但是一直没有动手写一个,一是不想在目前学习j ...
- 如何创建一个自定义jQuery插件
简介 jQuery 库是专为加快 JavaScript 开发速度而设计的.通过简化编写 JavaScript 的方式,减少代码量.使用 jQuery 库时,您可能会发现您经常为一些常用函数重写相同的代 ...
- QML插件扩展(一)
准备分两节来介绍QML扩展插件,分别为 (一)基于QML文件的扩展方式 (二)基于C++的插件扩展 这篇先介绍基于QML的插件扩展. 先介绍几个基本概念: qmldir: 用于组织自定义的QML插件, ...
- 图片延时加载原理 和 使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
图片加载技术分为:图片预加载和图片延时加载. javascript图片预加载和延时加载的区别主要体现在图片传输到客户端的时机上,都是为了提升用户体验的,延时加载又叫懒加载.两种技术的本质:两者的行为是 ...
- [IDEA插件] - 一个不错的插件
今天看到微信平台一篇推送IDEA插件的文章继而下载了个插件看了下. 名字叫做codehelper.generator codehelper.generator http://plugins.jetbr ...
- 用javascript写一个emoji表情插件
概述 以我们写的这个emoji插件为例,网上已经有一些相关的插件了,但你总感觉有些部分的需求不能被满足(如:可以自行添加新的表情包而不用去改源代码等等) 详细 代码下载:http://www.demo ...
- caddy & grpc(3) 为 caddy 添加一个 反向代理插件
caddy-grpc 为 caddy 添加一个 反向代理插件 项目地址:https://github.com/yhyddr/caddy-grpc 前言 上一次我们学习了如何在 Caddy 中扩展自己想 ...
- 如何编写一个WebPack的插件原理及实践
_ 阅读目录 一:webpack插件的基本原理 二:理解 Compiler对象 和 Compilation 对象 三:插件中常用的API 四:编写插件实战 回到顶部 一:webpack插件的基本原理 ...
- 做了一个sublime text插件
做了一个sublime text插件,可以方便地查看C++/python的调用图.插件的演示视频在这里: http://list.youku.com/albumlist/show?id=2820226 ...
随机推荐
- php 上传文件。$_FILES
<form name="article" method="post" enctype="multipart/form-data" ac ...
- 使用Memory Analyzer tool(MAT)分析内存泄漏
前言的前言 写blog就是好,在大前提下可以想说什么写什么,不像投稿那么字字斟酌.上周末回了趟成都办事,所以本文来迟了.K117从达州经由达成线往成都方向走的时候,发现铁路边有条河,尽管我现在也不知道 ...
- [css] px em rem
一.区别 px是相对于显示器屏幕分辨率而言的. em相对于浏览器的默认字体尺寸. rem相对于HTML根元素. 二.使用 1.em 任意浏览器的默认字体高都是16px.所有未经调整的浏览器都符合: ...
- PHP SPL标准库之SplFixedArray使用实例
SplFixedArray主要是处理数组相关的主要功能,与普通php array不同的是,它是固定长度的,且以数字为键名的数组,优势就是比普通的数组处理更快. 看看我本机的Benchmark测试: i ...
- PostgreSQL 8.1 中文文档(转)
PostgreSQL 8.1 中文文档(转) http://www.php100.com/manual/PostgreSQL8/ 或者点击下面链接 PostgreSQL 8.1 中文文档
- Struts2文件上传
1 在Struts2中上传文件需要 commons-fileupload-1.2.1.jar.commons-io-1.3.2.jar 这两个包. 2 确认页面form表单上的提交方式为POST, ...
- Sqlserver_判断该路径是否存在该文件
declare @result int =0declare @path nvarchar(200)='d:\1.csv'execute master.dbo.xp_fileexist @path ,@ ...
- [借鉴] Android简便通用的SimpleBaseAdapter
public abstract class SimpleBaseAdapter<T> extends BaseAdapter { protected Context context; pr ...
- <转>java 快速查找
[Ct rl+T] 搜索当前接口的实现类 1. [ALT +/] 此快捷键为用户编辑的好帮手,能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁,当记不全类.方法和属性的名字时,多体验一下[ ...
- 例题:打印乘法口诀。可能大家一看有点难,但只要理解for 循环嵌套,两层循环,外层循环行数,里层循环列数,搞清楚行数和列数之间的关系,就可以轻松做出这道题
namespace 打印乘法口诀{ class Program { static void Main(string[] args) { f ...