自定义QML扩展插件与调用一步一脚印

环境:Win10,Qt5

可以参考help文档->QML Plugin Example&QQmlExtensionPlugin Class

  1. 建立工程

定义的c++类为MyWin,URL为默认模块名(2者必须一致,无需大小写匹配)

目录结构图

   2.C++里定义QML类型

mywin里头可以在C++里定义QML类型,可以参考help文档->Defining QML Types from C++

如下代码:

class MyWin : public QQuickItem
{Q_OBJECTQ_DISABLE_COPY(MyWin)Q_PROPERTY(QString str READ string )//定义QML可利用的属性
public Q_SLOTS:QString string(){return "custom plugin"; }//与上方的READ string对应,QML可利用的方法,因为槽函数和信号都是可以在QML中获得
public:MyWin(QQuickItem *parent = nullptr);~MyWin();
};
myWin_plugin里头注册c++类和注册插件于Qt meta object systemqmlRegisterType(uri, 1, 0, "MyWin");//MyWin是c++类显示给QML的组件名,可以随便修改

3.定义QML组件

如Win.qml代码:

module mywin //模块名
Win 1.0 Win.qml  //qml文件指定
plugin MyWin//插件名

再次提醒,模块名必须与插件名一致

插件所在文件夹名必须与模块名一致

6.整理mywin目录文件
 

7.调用插件

 engine.addImportPath("../");//engine应该知道,添加路径为插件所在的上层目录

8.typeinfo plugin_name.qmltypes

需自己生成,不然无法语法高亮。可以参考HELP文档->Writing a qmltypes File

我这里好像不行,不知道是那种情况,不影响效果,就懒得手动生成了。

但可以在*.pro中设置

QML_IMPORT_PATH =../mywin   #mywin为插件所在目录
#这样可以代替typeinfo plugin_name.qmltypes来支持语法高亮
#注意只能使用系统标准路径语法,即‘../’而不是使用Qt宏来设置,如$$PWD/mywin,这样时无法高亮的
#这样对于qml组件和c++定义的qml组件都可以语法高亮了

上运行图:

一切预期一样。

 

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部