首页 技术 正文
技术 2022年11月10日
0 收藏 992 点赞 4,769 浏览 1323 个字

制作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。只是猜想

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,090
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,567
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,415
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,187
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,823
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,906