qtdesigner自定义插件不到指定的模块_Qml组件化编程10-自定义Quick模块

qtdesigner⾃定义插件不到指定的模块_Qml组件化编程10-
⾃定义Quick模块
⽬录
(放个⽬录⽅便⼤家预览。破乎不⽀持⽬录,这个⽬录是从博客复制过来的,点击跳转到博客)
简介
近期讯息
Qt Design Studio
TaoQuick
Qt资源管理
qrc内容
编译和加载qrc
资源的引⽤
插件中注册资源
Qml模块
qmldir⽂件
⽰例
不⽤开放Qml源码
4g视频监控Designer⽀持
metainfo
带资源的组件,需要⽤C++扩展注册资源
安装
最简Demo
简介
本⽂是《Qml组件化编程》系列⽂章的第⼗篇,涛哥将教⼤家,Qml⾃定义模块的知识。
特别是最近的研究结果:如何让Qml模块在Designer中拖拽使⽤。涛哥希望有更多的⼈学会这个技能。
注:⽂章主要发布在涛哥的博客 和 涛哥的知乎专栏-Qt进阶之路
近期讯息
(先播点新闻)
Qt Design Studio
2019年5⽉20的时候,Qt官⽅放出了Qt Design Studio的1.2 beta版, 免费使⽤/暂不开源。
下载地址在这:
Qt Design Studio是主要给美⼯使⽤的⼀款UI⼯具。
燃料乙醇Qt在Photo Shop/Sketch这两款⼯具中,提供了QtBridge插件,可以将设计好的资源直接导出成Qml⼯程。
导出的⼯程可以⽤Qt Design Studio/QtCreator打开,⽤拖拖拽拽的⽅式,实现各种功能、动画等等。
QtDesignStudio⽬前还不成熟,但未来是⼀⽚光明。等Designer做好了,就不再需要⼿写Qml代码,拖拖拽拽就能搞定界⾯部分。只剩下逻辑处理和后端功能才需要写代码/写js脚本。六分量传感器
Qt Design Studio⽬前与QtCreator的差异是,前者内置了⼀些特殊的模块:包括 Shapes图元、Effects等,
Qt Design Studio还使⽤了qmlproject⽂件作为⼯程管理。
除此之外,功能都是⼀样的。帧动画编辑器在QtCreator中也是可以使⽤的。
TaoQuick
最新的TaoQuick (tag: 0.1.6), 已经⽀持在QtCreator中拖拽使⽤了
代码仓库在这:TaoQuick
(下⾯进⼊正题)
Qt资源管理
(有必要先说⼀下资源管理,这部分内容帮助⽂档都有,搜索关键词为”rcc” 或 “Qt Resource”)
Qt提供了⼀个资源管理⼯具rcc,可以将各种资源⽂件压缩、打包进⼆进制程序。
通常⽤来打包各种图⽚、Qml⽂件、配置⽂件或数据⽂件等等,只要将资源⽂件添加到qrc⽂件中即可。qrc⽂件是xml格式的⽂本⽂件,⾥⾯记录着添加的各种资源。
qrc内容
⽰例 TaoResource.qrc:
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>images/copy.png</file>
<file>images/cut.png</file>
<file>images/new.png</file>
<file>images/open.png</file>
<file>images/paste.png</file>
<file>images/save.png</file>
</qresource>
</RCC>
编译和加载qrc
只要在pro⽂件中写上 RESOURCES = TaoResource.qrc就可以了。qmake会⾃动将资源压缩、打包进exe/dll程序也可以使⽤命令⾏⼿动编译:
rcc -binary TaoResource.qrc -
或者
rcc -binary TaoResource.qrc -o TaoResource.dll
这种⽅式编译出来的,是⼀个纯粹的资源插件,扩展名写什么都⽆所谓的。
可以在代码中动态加载资源、卸载资源
QResource::registerResource("/path/");
QResource::unRegisterResource("/path/");
资源的引⽤
使⽤”:/“ 或者 “qrc:/“开头的路径即可,这两者的区别涛哥未作总结,⼤家⾃⼰实践吧。
cutAct = new QAction(QIcon(":/images/cut.png")
插件中注册资源
在Qt插件中,添加了资源的情况下,需要⽤宏Q_INIT_RESOURCE来注册资源
(Qt插件和前⾯的rcc编译出来的不⼀样,不是⼀个纯粹的资源插件,不能直接被QResource::registerResource识别)
TaoClass::TaoClass() : BaseClass()
{
Q_INIT_RESOURCE(TaoResource);
QFile file(":/images/save.png");
...
}
Qml模块
(这部分内容帮助⽂档也有,搜索关键词”QML Modules”)
设计Qml模块的⼤致步骤如下:
1. 实现Qml组件
2. 实现qmldir⽂件
平板电脑支撑架
3. 导出Qml插件类
如果要⽀持designer,还要加上⼀步:
1. 创建designer⽂件夹,编写metainfo⽂件
这⼀步暂时没有任何⽂档和⼯具,涛哥照猫画虎做出来的。以后⽂档肯定会出来的,现在有些功能不完善。
(参考Qt的⽀持Designer的Qml模块。更深⼊的了解,在QtCreator源码)
qmldir⽂件
(帮助⽂档搜索关键词 “qmldir” 或 “Module Definition qmldir…”)
⽰例
这⾥以TaoQuick中的为例,我顺⼿加了点注释:
TaoQuick/TaoQuick/qmldir:
#模块名称 import使⽤的地⽅,就⽤这个名称
module TaoQuick
#插件dll⽂件名称,即 TaoQuick.dll
plugin TaoQuick
#依赖的模块
depends QtQuick 2.12
depends QtQuick.Controls 2.12
# 这⾥⼀堆的组件
TGradientBtn 1.0 BasicComponent/Button/TGradientBtn.qml
TImageBtn 1.0 BasicComponent/Button/TImageBtn.qml
TImgTextBtn 1.0 BasicComponent/Button/TImgTextBtn.qml
TTextBtn 1.0 BasicComponent/Button/TTextBtn.qml
TMoveArea 1.0 BasicComponent/Mouse/TMoveArea.qml
TTransArea 1.0 BasicComponent/Mouse/TTransArea.qml
TNormalProgress 1.0 BasicComponent/Progress/TNormalProgress.qml
TCircleProgress 1.0 BasicComponent/Progress/TCircleProgress.qml
TBusyIndicator 1.0 BasicComponent/Others/TBusyIndicator.qml
TDragItem 1.0 BasicComponent/Others/TDragItem.qml
TResizeBorder 1.0 BasicComponent/Others/TResizeBorder.qml
TToolTip 1.0 BasicComponent/Others/TToolTip.qml
TDialog 1.0 BasicComponent/Others/TDialog.qml
TPopup 1.0 BasicComponent/Others/TPopup.qml
TFPS 1.0 BasicComponent/Others/TFPS.qml
射击标靶
# ⽀持designer
designersupported
还有单例singleton、内部类型internal、C++类型描述typeinfo, 这些⽤法TaoQuick没有⽤到,就不多说了。plugin TaoQuick这⼀句,表⽰对应的dll⽂件名称。dll是要写⼀个C++类,继承⾃QQmlExtensionPlugin
速记机看⼀下TaoQuick中的实现

本文发布于:2024-09-23 13:15:00,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/179062.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:资源   插件   模块   功能   代码   类型
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议