QML导入模块
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QML导入模块相关的知识,希望对你有一定的参考价值。
我想在main.qml
文件中导入自定义模块。 Main.qml
位于我的"/"
资源的qml.qrc
前缀下。
我的自定义模块Config.qml
位于Config
子目录中。 (Config
目录是main.qml
所在的地方,即/path/to/main/Config/Config.qml
。
config.qml
和qmldir
文件存储在myPrefix
文件中的前缀qml.qrc
下。
Project
|- Config
|- Config.qml
|- qmldir
|- main.qml
我还创建了一个qmldir
文件,根据文档http://doc.qt.io/qt-5/qtqml-modules-identifiedmodules.html必要。这是我的Config.qml
和qmldir
文件。
Config.qml
pragma Singleton
import QtQuick 2.0
QtObject {
property int myVariable: 10
}
qmldir
singleton Config 1.0 Config.qml
当我想在MyModule
文件中导入我的自定义模块asmain.qml
时。
import "???" as MyModule
我怎样才能做到这一点?有人有建议吗?
编辑:
qrc文件
<RCC>
<qresource prefix="/">
<file>main.qml</file>
</qresource>
<qresource prefix="/myPrefix">
<file>Config/qmldir</file>
<file>Config/Config.qml</file>
</qresource>
模块的qmldir文件必须位于导入路径中反映URI点标识符字符串的目录结构中,其中标识符中的每个点(“。”)反映目录树中的子级别。例如,模块com.mycompany.mymodule的qmldir文件必须位于导入路径中某处的子路径com / mycompany / mymodule / qmldir中。
所以你应该将module MyModule
更改为module Config
或在特定路径中导入它:
import "./Config" as MyModule
**问题在Arpegius的答案之后发生了变化以提出另一个问题,我回答了这个新问题。 **
这与qrc-prefix无关。 我相信你正在混合两种不同的方法来导入。
使用或不使用前缀,要导入模块,您需要相应地设置QtQuick引擎的导入路径。
在您的情况下,因为您的模块目录位于项目根目录中:
engine.addImportPath("qrc:/");
// Now engine will look for subfolders which could be modules == with a qmldir
在main.qml中,使用前缀路径而不是文件系统路径进行导入:
import myPrefix 1.0 as MyNamespace
您还可以导入简单的QML文件而不是模块:
// Because the path is relative to main.qml even in a qrc
import "myPrefix" as MyNamespace
那你根本就不需要qmldir。
以上是关于QML导入模块的主要内容,如果未能解决你的问题,请参考以下文章
导入 JavaScript 时如何在 QML 中使用绝对路径?
26.Qt Quick QML-RotationAnimationPathAnimationSmoothedAnimationBehaviorPauseAnimationSequential(代码片段