【解决问题】在使用QQuick进行开发的过程中,随着业务越来越庞大,qml资源会越来越多,通过相对路径进行依赖,越发显得不优雅;想要更加清晰的展示自己封装的qml功能组件或者业务模块,qmldir是一个很好的解决方案
【qmldir文件简析】以下是我的一个基础组件模块简析
Module BasicComponent #声明模块的模块标识符,必须与模块的安装路径匹配,必须是文件的第一行
ShadowRectangle 1.0 ShadowRectangle.qml #依次为类型名称 类型的模块版本 QML文件名(这里还有可选参数[singleton]用于声明单例类型)
YaHeiText 1.0 YaHeiText.qml
CirclePoint 1.0 CirclePoint.qml
TeacherInfoRect 1.0 TeacherInfoRect.qml
【qmldir实操】
1.打开你的配置文件添加你的QML模块
# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH = $$PWD/qmlTools
2.无论是QQuickView还是QQuickWidget,通过qml engine(qml 引擎,这里可以留个坑,方便大家以后一起讨论)导入路径,在设置主源文件之前
this->engine()->addImportPath(":/qmlTools");
this->setSource(QUrl("qrc:/qml/main.qml"));
3.打开你的任意qml代码,以我上述基础组件模块为例
import BasicComponent 1.0
Rectangle{
YaHeiText{
text: qsTr("Module Test")
font.pixelSize: 14
}
}
总结:模块化的目的是为了降低程序复杂度,使程序设计、调试和维护等操作简单化。改变某个子功能只需相应改变相应模块即可。【引自百度百科】
【参考资料】Qt Assistant: Module Definition qmldir Files