首页 » 网站建设 » php扩大插件fileinfo技巧_封装QML扩展插件

php扩大插件fileinfo技巧_封装QML扩展插件

访客 2024-12-13 0

扫一扫用手机浏览

文章目录 [+]

一、纯QML实现插件

即插件内部实现全部是QML的,与C++无关

php扩大插件fileinfo技巧_封装QML扩展插件

文章末了为大家准备了Qt资料

php扩大插件fileinfo技巧_封装QML扩展插件
(图片来自网络侵删)

↡↡↡↡↡↡↡↡↡↡↡↡↡↡↡↡↡↡↡↡↡↡↡↡↡↡↡↡

1、 新建插件工程

2、工程名为SPMaker

默认天生的dll插件名=Target=工程名

3、设置详情

个中MyItem是默认添加的C++类,测试期间可以不修正名字,由于这里只测试QML实现的插件,纵然删掉也无所谓;

URI是利用时引入的包名,建媾和工程名同等

4、这里紧张测试QML插件,工程天生后将MyItem类删除

5、将spmarker_plugin.cpp中与MyItem干系的删除

6、在根目录下新建QML文件夹,方便存放QML文件

7、在文件夹里新建资源文件

8、在资源文件里新建须要导出的QML文件

9、新建待导出QML文件所依赖的QML文件

个中MyRect.qml是希望别人能够直策应用的qml

个中BaseRect.qml是一个根本qml,由MyRect.qml里调用

须要把稳的是:BaseRect.qml终极会被编译进dll,故打包时不须要复制,MyRect.qml须要

10、在spmarker_plugin.cpp中注册QML组件

qmlRegisterType(QUrl("qrc:/qml/MyRect.qml"), uri, 1, 0, "MyRect");

11、分别在Debug和Release下构建工程,网络天生的dll、qmldir、MyRect.qml

12、新建文件夹SPMaker,即与包名同等

13、将11步中天生的文件放进文件夹

此文件夹如果放在D:\Qt5.15.2\5.15.2\msvc2019_64\qml下,则当前环境所有Quick工程都可以直策应用,由于Qt会自动把这个路径作为import查找路径。

我这里是存放到Third_Party文件夹,此文件夹由git同步,方便其他PC可以同步利用。

14、此时利用这个插件会没有提示,通过qmlplugindump来天生提示文件

打开对应Qt版本的终端,进入SPMaker文件夹的上层目录,输入指令:

qmlplugindump -nonrelocatable SPMarker 1.0 ./ > SPMarker/plugin.qmltypes

此时在SPMaker文件夹里已经天生了plugin.qmltypes文件

15、修正qmldir,增加一句话:

typeinfo plugin.qmltypes

经测试,这里不加这句话也可以。


大功告成,须要把稳:

1、一定要Debug和Release下的dll都编译,不然Debug工程利用Release的dll会报错插件未安装

2、为了方便将须要的文件自动天生到指定路径,在pro里这样配置:

TEMPLATE = libTARGET = SPMarkerQT += qml quickCONFIG += plugin c++11###########天生路径,debug和release可放在同一文件夹里##########contains(DEFINES, WIN64) { message("WIN64") DESTDIR = $$(Third_Party)/WpQuickControls/msvc2019_64/SPControls/$$TARGET} else { message("WIN32") DESTDIR = $$(Third_Party)/WpQuickControls/msvc2019/SPControls/$$TARGET}TARGET = $$qtLibraryTarget($$TARGET) #如果是debug就加上duri = SPMarker#####天生qmltypes文件######CONFIG += qmltypes#QML_IMPORT_NAME = SPMarker#QML_IMPORT_MAJOR_VERSION = 1#QMLTYPES_FILENAME = $$DESTDIR/plugins.qmltypes#####源码路径#####SOURCES += \ spmarker_plugin.cppHEADERS += \ spmarker_plugin.h#####资源文件#####RESOURCES += \ QML/qml.qrc#####定义须要拷贝的文件#####DISTFILES = \ QML/MyRect.qml \ qmldir#####待拷贝文件路径#######file.files += $$DISTFILES #files代表须要拷贝的文件#####文件拷贝目标路径######file.path = $$DESTDIR/ #path代表文件须要拷贝到的目的路径#target.path += $$PWD/ #dll在当前文件夹也会天生#INSTALLS += target file #dll在当前文件夹也会天生INSTALLS += file #把稳必须给build的make参数里加上install,不然不会实行install

3、为了方便自动天生qmltypes文件,新建bat脚本,并实行

D:/Qt5.15.2/5.15.2/msvc2019_64/bin/qmlplugindump -nonrelocatable SPMarker 1.0 ../ > plugin.qmltypes

按需修正,参数对应为:qmlplugindump路径+nonrelocatable参数+模块名+模块父路径+版本+输出符号+qmltypes文件名

4、利用,与利用基本控件同等

import SPMarker 1.0Item { SPMarker {}}

二、纯C++实现的插件

即插件内部实现全部是C++的,与QML无关 ;如果上面的步骤都懂了,这里就非常大略~

1、步骤与纯QML实现同等,新建工程,这里C++类名、URI都为:SeriesUpdateTool,没有利用任何资源和QML文件

2、SeriesUpdateTool类是QObject子类,与注册C++类为QML利用时一样

3、在seriesupdatetool_plugin.cpp中注册C++类

4、qmldir中加上:

typeinfo plugin.qmltypes

把稳:此步

5、网络Debug和Release下的dll,qmldir文件到同一个文件夹里,也可以与QML插件时同等,在pro里设置须要复制的文件

6、天生qmltypes文件

实行脚本,天生文件成功

利用办法同等,QML实现插件时,还须要复制须要导出的QML文件,而这里不须要

三、具备依赖关系的插件

对付我的实验环境,上文的C++实现插件实际上只是一个工具,不直接面向利用者,须要再次实现一个能够面向利用者的插件,在此插件里利用到了上文的C++实现插件。
须要把稳好几个点,否则很随意马虎失落败~

1、新建插件工程,我这里是QML实现插件,插件名、URI为:SPTrace

2、新建资源文件,新建须要导出的QML

3、在QML中调用了上文的C++实现插件

此步须要把稳,须要将C++实现插件文件夹复制当前源码工程下,否则会报模块找不到缺点

4、构建工程,在希望的环境里天生模块

5、天生qmltypes文件

实行脚本,或者在CMD里实行此命令

须要把稳:当前路径下一定要有C++实现插件模块,否则会报错找不到模块

PS:

1、如果某模块里利用了某JS模块,须要在当前模块路径下将JS模块放过去做依赖

2、如果某模块利用了FA字体模块,然而FA字体模块是无法创建成模块的,以是须要将FA干系的信息定义成属性,在此模块里不要有FA干系的表示;在利用此模块的时候须要import FA和此模块,然后再利用

Qt开拓学习路线

Qt学习资料领取→「链接」

标签:

相关文章