遗留模块

遗留模块(Legacy module)是指其规范qmldir 文件不包含模块标识符指令的模块。遗留模块既可以安装到 QML 导入路径(作为已安装的遗留模块),也可以由客户通过相对导入(作为已定位的遗留模块)导入。建议客户尽可能避免使用遗留模块。模块开发者应确保他们创建的是已识别模块,而不是遗留模块。

已安装的遗留模块

QML 引擎会自动给已安装的非标识模块一个标识符。这个隐含定义的标识符等于模块的安装路径(相对于 QML 导入路径),其中的目录分隔符会被句点字符取代。

安装到 QML 导入路径的非标识模块有以下语义:

  • 客户可通过隐式模块标识符导入模块
  • 客户在导入模块时必须指定版本
  • 冲突的类型名由 QML 引擎任意解决,解决冲突的方式不能保证在不同版本的 QML 之间保持一致
  • 其他遗留模块可能会修改或覆盖已安装遗留模块提供的类型定义

已定位的遗留模块

通过相对目录路径 import 语句导入的非识别模块,会被引擎作为定位遗留模块加载。以下语义适用于定位遗留模块:

  • 客户可通过相对导入路径导入模块
  • 客户端在导入模块时不一定要指定版本
  • 如果客户没有在导入语句中提供导入版本,QML 引擎不保证将导入给定类型名定义的哪个版本
  • QML 引擎会任意解决冲突的类型名,不同版本的 QML 不能保证解决冲突的方式保持不变
  • 其他遗留模块可能修改或覆盖定位遗留模块提供的类型定义

定位的遗留模块可位于本地文件系统或网络上,并可通过指定文件系统路径或网络 URL 的 URL 来引用。

另请参阅 现代 QML 模块将 QML 模块移植到 CMake

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.