自定义QML扩展插件与调用一步一脚印
环境:Win10,Qt5
可以参考help文档->QML Plugin Example&QQmlExtensionPlugin Class
- 建立工程


定义的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组件都可以语法高亮了
上运行图:

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