qmldir的化繁为简

  • 1. qmldir模块化管理流程
    • 1.1 添加qmldir文件
    • 1.2 修改qmldir文件
    • 1.3 pro文件导入QML模块的路径
    • 1.4 main.cpp导入安装模块路径
    • 1.5 修改文件别名
    • 1.6 模块使用
  • 2. 源码和运行结果

所有的热爱都要不遗余力,真正喜欢它便给它更高的优先级,和更多的时间吧!

QML其它文章请点击这里:     QT QUICK QML 学习笔记


姊妹篇:

qmldir实例——QGC地面站中手把手教你添加qmldir模块文件

QT QML 模块化管理(一)——添加工程组(文件组)

QT QML 模块化管理(二)——前缀(Prefix)和别名管理


当然仅用别名相对路径的管理是不够的,当项目越大的时候,就得看qmldir的管理管理了,具体使用流程如下:

1. qmldir模块化管理流程

1.1 添加qmldir文件

添加空文本,并命名为qmldir。

其中路径相当重要,如上qmldir的父目录为QmlTest1,那么qmldir的模块名必须为QmlTest1,这是经过了多次测试得出来的惨痛教训。

1.2 修改qmldir文件

具体格式和说明可搜官方帮助文档: Module Definition qmldir Files
这里只介绍最简单的形式(能用就好)

Module QmlTest1 #声明模块的模块标识符,必须与模块的安装路径匹配,必须是文件的第一行#依次为类型名称 | 类型的模块版本 | QML文件名(这里还有可选参数[singleton]用于声明单例类型)
Qml11           1.0           Qml11.qml
Qml13           1.0           Qml13.qml

1.3 pro文件导入QML模块的路径

打开工程文件pro1.pro 并修改如下:

# QML_IMPORT_PATH =
#修改为
QML_IMPORT_PATH += $$PWD

能正常运行,但是有显示错误,如下:(pro1.pro 中不做任何修改也能正常运行,也会报显示错误)

添加路径为 $$PWD/qmldir,不会有显示错误

QML_IMPORT_PATH += $$PWD/qmldir

1.4 main.cpp导入安装模块路径

在main.cpp中增加红色框语句即可

engine.addImportPath(QStringLiteral("qrc:/"));

1.5 修改文件别名

注意:
① 经测试不管qmldir在实际文件中是否和qml文件处于同一文件夹下,都需要修改别名使得在同一层文件夹下
② 如果qmldir和qml在实际文件中不在同一目录下,组件调用的时候会索引不到,建议qmldir和qml放入同一目录下如QmlTest2

1.6 模块使用

只需导入模块,然后调用文件名就好

...
import QmlTest1 1.0
import QmlTest2 1.0Window {...Qml11 {anchors.horizontalCenter:   parent.horizontalCenter}Qml13 {anchors.horizontalCenter:   parent.horizontalCenter}
}

2. 源码和运行结果

测试代码如下:

//Qml11.qml
import QtQuick 2.0Text {text: qsTr("Text11")
}
import QtQuick 2.12
import QtQuick.Window 2.12import QmlTest1 1.0
import QmlTest2 1.0Window {visible: truewidth: 250height: 250title: qsTr("Image")Column {spacing:  10anchors.fill:       parentText {text: qsTr("--------------Text Test--------------")anchors.horizontalCenter:   parent.horizontalCenter}//可以直接调用,因为同文件级别Qml1 {anchors.horizontalCenter:   parent.horizontalCenter}//导入的 QmlTest1模块中Qml11 {anchors.horizontalCenter:   parent.horizontalCenter}//导入的 QmlTest1模块中Qml13 {anchors.horizontalCenter:   parent.horizontalCenter}//导入的 QmlTest2模块中Qml21 {anchors.horizontalCenter:   parent.horizontalCenter}}
}

运行如下:

【参考】 【原创】qmldir模块化管理qml资源


QML其它文章请点击这里:     QT QUICK QML 学习笔记


姊妹篇:

qmldir实例——QGC地面站中手把手教你添加qmldir模块文件

QT QML 模块化管理(一)——添加工程组(文件组)

QT QML 模块化管理(二)——前缀(Prefix)和别名管理

Qt QML 模块化管理(三)—— qmldir的化繁为简相关推荐

  1. Qt QML 菜单/目录/工具栏的全面攻略(TabBar、MenuBar、ToolBar、Button定制、Listview、Repeater)

    Qt QML 菜单/目录/工具栏的全面攻略 1. TabBar的工具栏/目录 1.1 演示 1.2 关键控件 1.3 源码 2 MenuBar 菜单 2.1 演示 2.2 关键控件 2.3 源码 3 ...

  2. 使用Qt编写模块化插件式应用程序

    动态链接库技术使软件工程师们兽血沸腾,它使得应用系统(程序)可以以二进制模块的形式灵活地组建起来.比起源码级别的模块化,二进制级别的模块划分使得各模块更加独立,各模块可以分别编译和链接,模块的升级不会 ...

  3. QT快速入门、三点求圆心实现详解

    在编程中,会经常用到数学计算,所以C++将常用的数学计算,例如求正余弦等,封装成函数(正是我们在3.2 数学计算中学习到的),我们只需要写入简单的语句就可以执行所需要的功能,这正是函数的意义.在这一章 ...

  4. 使用QT进行内存管理

    使用QT进行内存管理 Memory Management with Qt 使用QT进行内存管理 Garbage Collection through the Back Door 通过后门垃圾回收 Hi ...

  5. Qt物联网综合管理平台源码

    Qt物联网综合管理平台源码 0.2.1 软件模块 设备监控模块,包括数据监控(表格形式展示).设备面板(面板形式展示).地图监控(地图形式展示).曲线监控(曲线形式展示). 数据查询模块,包括报警记录 ...

  6. ES6的模块化管理、立即执行函数(IIFE):在函数声明后面立即调用、函数劫持

    1.Node.js简介: (1)Node是什么: A.浏览器内核有两个引擎:渲染引擎(渲染html.css).JavaScript引擎(运行JavaScript代码) B.Node是独立于浏览器的Ja ...

  7. QT 常用布局管理器

    Qt布局管理详解 详解 QT 布局管理界面 图文并茂 QT主要布局管理器分类 QHBoxLayout(水平布局) 把子窗口从左到右排列在一个水平行上. QWidget *window = new QW ...

  8. elasticSearch6源码分析(2)模块化管理

    elasticsearch里面的组件基本都是用Guice的Injector进行注入与获取实例方式进行模块化管理. 在node的构造方法中 /*** Constructs a node** @param ...

  9. Qt数据库操作(三) -- 使用SQL模型类

    文章目录 Qt数据库操作(三) -- 使用SQL模型类 1.SQL查询模型 2.SQL表格模型 3.关系表格模型 Qt数据库操作(三) – 使用SQL模型类 Qt 提供了3个高级的类来访问数据库,分别 ...

  10. Qt QML模块提供的重要C ++类

    Qt QML模块提供的重要C ++类 Qt QML模块提供的重要C ++类 QML运行时 QQmlEngine类 QQmlContext类 动态对象实例化和表达评估 QQmlComponent类 QQ ...

最新文章

  1. pyecharts学习(part1)--绘制图表的三种方式
  2. java实验指导书(实验四)答案_java程序设计实验指导书答案
  3. 数据结构基础(17) --二叉查找树的设计与实现
  4. TypeScript入门教程 之 classes-emit
  5. php wmi,wmi与vbs
  6. tableView编辑
  7. spring mvc tutorial
  8. scala method与function的区别
  9. spring 事物配置几种
  10. 二叉树 先序遍历 中序遍历 后续遍历 java实现
  11. map分组后取前10个_35岁詹皇有多强?17年生涯首拿助攻王背后:10个月前早已定下目标...
  12. 稳压器及稳压二极管型号对照表
  13. JTAG各类接口针脚定义、含义以及SWD接线方式
  14. 简指南越狱的iOS及原因,负责其
  15. Echart词云图自定义形状,少词显示不全,配置项相关设置
  16. Redis Lpush 命令
  17. prompt-based models
  18. 微信小程序--个人主页的制作
  19. 数数(数学题运算分配律)
  20. 《鸟哥的Linux私房菜》chapter7 20180827~20180831

热门文章

  1. 前台、中台、后台到底是什么?
  2. 动态监听监听和静态注册---elaine
  3. 差示光谱法的测定原理_完整版||绝对21张图谱解析21种仪器原理及应用
  4. springboot自定义start解析(start中配置从数据源)
  5. 电影《无双》中的管理知识
  6. Spring Cloud 出现No instances available for user-service异常
  7. rem 前端字体_移动端前端开发不可不知的——rem
  8. PLC(可编程逻辑控制器)
  9. Oracle中国区大裁员:昔日辉煌不再,退出中国市场?
  10. docsify(一):新增PDF目录、封面功能