准备分两节来介绍QML扩展插件,分别为

(一)基于QML文件的扩展方式

(二)基于C++的插件扩展

这篇先介绍基于QML的插件扩展。

先介绍几个基本概念:

qmldir: 用于组织自定义的QML插件,qmldir的具体写法可参考

.qmltypes:qml插件的解释文件,用于QtCreator语法高亮。可通过Qt提供的工具qmlplugindump自动生成

QML_IMPORT_PATH: 导入插件路径,以支持插件的语法高亮。个人理解是如果纯QML文件的扩展,没有封装到C++中,则直接导入路径,即可支持语法高亮,如果有C++封装,则需要通过.qmltypes支持高亮。

addImportPath: 添加import寻址目录,c++代码里添加,没有前两项,只是QtCreator不能高亮,没有这种,则插件无法使用。

具体步骤

一、建立插件工程

1.建立工程,首先通过QtCreator创建一个QMLPluginTest子目录工程:

2.在QMLPluginTest子目录下,添加app测试工程

3.新建QML插件工程,MyPlugin

4.新建向导会自动创建示例文件及插件名称,这里可自己修改URI名称,即你的插件名称

5.自动创建的MyPlugin生成目录结构如图:

其中qmldir文件描述的插件的组成:

module MyPlugin

   plugin QMLPlugin

6.这节只介绍纯QML的插件方式,先不管自动生成的插件文件。

7.在MyPlugin目录下,添加扩展qml,这里添加一个测试矩形,MyRect.qml

8.在qmldir中添加MyRect.qml,

二、使用插件

1. 在app工程的main.qml中,import MyPlugin 1.0,

2.主要到右边代码中有让人郁闷的波浪线,说明QtCreator没有识别你的插件,需要QML_IMPORT_PATH来标记,打开app.pro文件

默认创建时QML_IMPORT_PATH =,没有赋值,修改为插件的路径,建议这里使用相对路径

QML_IMPORT_PATH = $$PWD/../

3.关闭QtCreator,重新打开,可以红色波浪线么有了

4.在main.qml中,使用创建的MyRect

5.最后一步,导入插件路径,在app的main.cpp添加import代码,如果没有这句,程序启动会报错误:

qrc:/main.qml:3 module "MyPlugin" is not installed

所以需在c++中添加importPath,代码如下:

QQmlApplicationEngine engine;

engine.addImportPath("E:/T/QMLPlugin/QMLPluginTest/");(注意这里导入路径是MyPlugin的上层文件夹,不是MyPlugin文件夹)

如果没有指定插件的生成目录,在release或者debug模式下编译, 在release模式下生成的路径为"...\QMLPlugin\release",需要新建一个MyPlugin

文件夹,把"...\QMLPlugin\release\QMLPlugin.dll"和”...\QMLPlugin\qmldir“一起拷贝到MyPlugin文件夹里面,然后将MyPlugin的上层文件夹

放到addImportPath(“”)中,比喻我的电脑为“E:\QT Project\TQ\LeiSigSlot\build-QMLPluginTest-Desktop_Qt_5_2_1_MinGW_32bit-Release\QMLPlugin”,插件目录为“E:\QT Project\TQ\LeiSigSlot\build-QMLPluginTest-Desktop_Qt_5_2_1_MinGW_32bit-Release\QMLPlugin\MyPlugin”

engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

6.最后的程序目录结构:

附录:

1.程序生成路径:E:\T\QMLPlugin\build

2.程序源代码下载地址

https://github.com/youngerking1985/QML_Learn/tree/master/QMLPlugin1

QML插件扩展(一)的更多相关文章

  1. QML插件扩展2(基于C++的插件扩展)

    上一节介绍了纯QML的插件扩展方式,这种扩展方式基本满足大部分的扩展需求,下面开始介绍比较小众的基于C++的扩展 (一)更新插件工程 1.更新MyPlugin工程下的qmldir文件,加入plugin ...

  2. [Unity]Unity3D编辑器插件扩展和组件扩展

    1. 插件扩展 1.1. 命名空间 using UnityEditor; using UnityEngine; //非必需,常用到 1.2. 使用语法 [MenuItem("Assets/M ...

  3. 百度umeditor富文本编辑器插件扩展

    富文本编辑器在WEB开发中经常用到,个人比较喜欢用百度出的ueditor这款,ueditor这款本身支持插件扩展的,但是ueditor的mini版本 umeditor 就没有那么方便了,不过找了很多资 ...

  4. Chrome插件(扩展)开发全攻略

    [干货]Chrome插件(扩展)开发全攻略:https://www.cnblogs.com/liuxianan/p/chrome-plugin-develop.html

  5. FireFox 浏览器插件/扩展开发学习

    2014-11-08 内容存档在evernote,笔记名"FireFox 浏览器插件/扩展开发学习"

  6. jQuery的noConflict以及插件扩展

    一.noConflict函数 JavaScript有很多插件,如果jQuery对象的$与其他插件冲突,我们可以使用noConflict()方法去掉$或者使用其他的符号代替 注:noConflict() ...

  7. jQuery笔记之工具方法extend插件扩展

    jQuery工具方法 $.extend()插件扩展(工具方法) $.fn.extend()插件扩展(实例方法) 浅度克隆.深度克隆 两个方法基本是一样的,唯一不同的就是调用方式不一样 -------- ...

  8. Chrome插件(扩展)

    [干货]Chrome插件(扩展)开发全攻略   写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均 ...

  9. 开发chrome插件(扩展)

    官方文档 https://developer.chrome.com/extensions/getstarted.html [干货]Chrome插件(扩展)开发全攻略 http://blog.haoji ...

随机推荐

  1. 深入了解——CSS3新增属性

    CSS3 选择器(Selector) 写过 CSS 的人应该对 CSS 选择器不陌生,我们所定义的 CSS 属性之所以能应用到相应的节点上,就是因为 CSS 选择器模式.参考下述代码: 清单 1. C ...

  2. 新项目引入gulp

    1:安装npm:官网下载nodejs--https://nodejs.org/en/.进行安装npm;--http://jingyan.baidu.com/article/a17d528506d7f5 ...

  3. 【2】Chrome - 快捷键

    记录一下 Chrome 常用的快捷键 温馨提示:点击快捷键回链接到对应的图文 快捷键汇总: 1. Ctrl + [ 或 Ctil + ]  ( Mac: Cmd + [ 或 Cmd + ] ): 移动 ...

  4. Spring Security(03)——核心类简介

    目录 1.1     Authentication 1.2     SecurityContextHolder 1.3     AuthenticationManager和Authentication ...

  5. JS的异步回调函数

    hi :)几日不见,趁着周末和父母在广州走走逛逛,游山玩水,放松身心,第一天上班就被一个问题难住了,不废话,以下是关于JS函数回调方面的知识,今天的查阅看的也是一知半解,摘录下来日后慢慢琢磨! js中 ...

  6. 《高性能Javascript》读书笔记-4

    第四章 算法和流程控制 代码组织结构和解决具体问题的思路是影响代码性能的主要因素 循环处理是最常见的编程模式之一,也是提高性能的关注点之一 循环分四种:标准for循环 ; i < Things. ...

  7. 一、链接Sql Server2014提示找不到实例的问题解决方案

    在登录数据库时,确认数据库地址.用户名.密码正确的情况下,却报如下错误,则说明目标数据库服务器有相应的服务未启动. 在目标数据库服务器中打开服务列表: 找到SQL Server(****)服务(括号中 ...

  8. .Net Core 常见问题整理

    1.安装时报0x80070490 找不到元素 这里应该是vs只装了web没有装c++ 下载一个 VC_redist.x64.exe 安装就行了 https://github.com/dotnet/co ...

  9. Arch最小化安装LXDE桌面环境

    安装最小化的LXDE桌面环境: pacman -S lxde-common 安装LXDE Session: pacman -S lxsession 不安装这个没法登录进桌面环境 安装LXDE面板: p ...

  10. 安装unbuntu系统后改回windows引导的方法

    1.安装EasyBCD 2.点BCD部署 3.分区:选c盘 4.点击编写MBR 5.点编辑引导菜单 6.确定win10后们的是有勾 7.点击保存设置