Qt QML 模块化管理(三)—— qmldir的化繁为简
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的化繁为简相关推荐
- 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 ...
- 使用Qt编写模块化插件式应用程序
动态链接库技术使软件工程师们兽血沸腾,它使得应用系统(程序)可以以二进制模块的形式灵活地组建起来.比起源码级别的模块化,二进制级别的模块划分使得各模块更加独立,各模块可以分别编译和链接,模块的升级不会 ...
- QT快速入门、三点求圆心实现详解
在编程中,会经常用到数学计算,所以C++将常用的数学计算,例如求正余弦等,封装成函数(正是我们在3.2 数学计算中学习到的),我们只需要写入简单的语句就可以执行所需要的功能,这正是函数的意义.在这一章 ...
- 使用QT进行内存管理
使用QT进行内存管理 Memory Management with Qt 使用QT进行内存管理 Garbage Collection through the Back Door 通过后门垃圾回收 Hi ...
- Qt物联网综合管理平台源码
Qt物联网综合管理平台源码 0.2.1 软件模块 设备监控模块,包括数据监控(表格形式展示).设备面板(面板形式展示).地图监控(地图形式展示).曲线监控(曲线形式展示). 数据查询模块,包括报警记录 ...
- ES6的模块化管理、立即执行函数(IIFE):在函数声明后面立即调用、函数劫持
1.Node.js简介: (1)Node是什么: A.浏览器内核有两个引擎:渲染引擎(渲染html.css).JavaScript引擎(运行JavaScript代码) B.Node是独立于浏览器的Ja ...
- QT 常用布局管理器
Qt布局管理详解 详解 QT 布局管理界面 图文并茂 QT主要布局管理器分类 QHBoxLayout(水平布局) 把子窗口从左到右排列在一个水平行上. QWidget *window = new QW ...
- elasticSearch6源码分析(2)模块化管理
elasticsearch里面的组件基本都是用Guice的Injector进行注入与获取实例方式进行模块化管理. 在node的构造方法中 /*** Constructs a node** @param ...
- Qt数据库操作(三) -- 使用SQL模型类
文章目录 Qt数据库操作(三) -- 使用SQL模型类 1.SQL查询模型 2.SQL表格模型 3.关系表格模型 Qt数据库操作(三) – 使用SQL模型类 Qt 提供了3个高级的类来访问数据库,分别 ...
- Qt QML模块提供的重要C ++类
Qt QML模块提供的重要C ++类 Qt QML模块提供的重要C ++类 QML运行时 QQmlEngine类 QQmlContext类 动态对象实例化和表达评估 QQmlComponent类 QQ ...
最新文章
- pyecharts学习(part1)--绘制图表的三种方式
- java实验指导书(实验四)答案_java程序设计实验指导书答案
- 数据结构基础(17) --二叉查找树的设计与实现
- TypeScript入门教程 之 classes-emit
- php wmi,wmi与vbs
- tableView编辑
- spring mvc tutorial
- scala method与function的区别
- spring 事物配置几种
- 二叉树 先序遍历 中序遍历 后续遍历 java实现
- map分组后取前10个_35岁詹皇有多强?17年生涯首拿助攻王背后:10个月前早已定下目标...
- 稳压器及稳压二极管型号对照表
- JTAG各类接口针脚定义、含义以及SWD接线方式
- 简指南越狱的iOS及原因,负责其
- Echart词云图自定义形状,少词显示不全,配置项相关设置
- Redis Lpush 命令
- prompt-based models
- 微信小程序--个人主页的制作
- 数数(数学题运算分配律)
- 《鸟哥的Linux私房菜》chapter7 20180827~20180831
热门文章
- 前台、中台、后台到底是什么?
- 动态监听监听和静态注册---elaine
- 差示光谱法的测定原理_完整版||绝对21张图谱解析21种仪器原理及应用
- springboot自定义start解析(start中配置从数据源)
- 电影《无双》中的管理知识
- Spring Cloud 出现No instances available for user-service异常
- rem 前端字体_移动端前端开发不可不知的——rem
- PLC(可编程逻辑控制器)
- Oracle中国区大裁员:昔日辉煌不再,退出中国市场?
- docsify(一):新增PDF目录、封面功能