首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QML导入模块

QML导入模块
EN

Stack Overflow用户
提问于 2016-02-29 11:46:25
回答 3查看 11.9K关注 0票数 7

我想在我的main.qml文件中导入一个自定义模块。Main.qml位于我的qml.qrc资源的"/"前缀下。

我的自定义模块Config.qml位于Config子目录中。(Config目录是main.qml所在的位置,即/path/to/main/Config/Config.qml

config.qmlqmldir文件存储在qml.qrc文件中的前缀myPrefix下。

代码语言:javascript
复制
Project
|- Config
    |- Config.qml
    |- qmldir
|- main.qml

此外,我还创建了一个qmldir文件,它是根据http://doc.qt.io/qt-5/qtqml-modules-identifiedmodules.html所需的文档编写的。这是我的Config.qmlqmldir文件。

Config.qml

代码语言:javascript
复制
pragma Singleton
import QtQuick 2.0
QtObject {
    property int myVariable: 10
}

qmldir

代码语言:javascript
复制
singleton Config 1.0 Config.qml

当我想将我的自定义模块作为MyModule导入到main.qml文件中时。

代码语言:javascript
复制
import "???" as MyModule

我怎么能这么做?有人有什么建议吗?

编辑:

qrc文件

代码语言:javascript
复制
<RCC>
<qresource prefix="/">
    <file>main.qml</file>
</qresource>
<qresource prefix="/myPrefix">
<file>Config/qmldir</file>
<file>Config/Config.qml</file>
</qresource>

EN

回答 3

Stack Overflow用户

发布于 2018-03-01 15:40:09

**问题在Arpegius回答后有所改变,以提出另一个问题,我回答这个新问题。**

这与qrc前缀无关。

我相信你们正在混合两种不同的进口方法。

不管有没有前缀,要导入一个模块,您都需要相应地设置QtQuick引擎的导入路径。

在您的例子中,因为您的模块目录位于项目根目录中:

代码语言:javascript
复制
engine.addImportPath("qrc:/");
// Now engine will look for subfolders which could be modules == with a qmldir

在您的main.qml中,您使用前缀路径而不是文件系统路径进行导入:

代码语言:javascript
复制
import myPrefix 1.0 as MyNamespace

您还可以导入简单的QML文件,而不是作为模块导入:

代码语言:javascript
复制
// Because the path is relative to main.qml even in a qrc
import "myPrefix" as MyNamespace

那么您根本不需要qmldir。

票数 3
EN

Stack Overflow用户

发布于 2016-02-29 13:32:00

来自文档

模块的qmldir文件必须驻留在导入路径中的目录结构中,该目录结构反映URI虚线标识符字符串,其中每个点(“”)。在标识符中,反映目录树中的子级别。例如,模块com.mycompany.mymodule的qmldir文件必须位于导入路径中某个子路径com/mycompany/mymodule/qmldir中。

因此,您应该将module MyModule更改为module Config或在特定路径中导入它:

代码语言:javascript
复制
import "./Config" as MyModule
票数 2
EN

Stack Overflow用户

发布于 2020-11-11 10:24:12

如果这仍然是任何人的问题,您可以右键单击该文件并选择添加文件到目录。然后选择要在其中添加qml文件的目录。这个目录应该与主qml文件相同。这样做解决了我的问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35698711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档