我想在我的main.qml文件中导入一个自定义模块。Main.qml位于我的qml.qrc资源的"/"前缀下。
我的自定义模块Config.qml位于Config子目录中。(Config目录是main.qml所在的位置,即/path/to/main/Config/Config.qml。
config.qml和qmldir文件存储在qml.qrc文件中的前缀myPrefix下。
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导入到main.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>
发布于 2018-03-01 15:40:09
**问题在Arpegius回答后有所改变,以提出另一个问题,我回答这个新问题。**
这与qrc前缀无关。
我相信你们正在混合两种不同的进口方法。
不管有没有前缀,要导入一个模块,您都需要相应地设置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。
发布于 2016-02-29 13:32:00
来自文档
模块的qmldir文件必须驻留在导入路径中的目录结构中,该目录结构反映URI虚线标识符字符串,其中每个点(“”)。在标识符中,反映目录树中的子级别。例如,模块com.mycompany.mymodule的qmldir文件必须位于导入路径中某个子路径com/mycompany/mymodule/qmldir中。
因此,您应该将module MyModule更改为module Config或在特定路径中导入它:
import "./Config" as MyModule发布于 2020-11-11 10:24:12
如果这仍然是任何人的问题,您可以右键单击该文件并选择添加文件到目录。然后选择要在其中添加qml文件的目录。这个目录应该与主qml文件相同。这样做解决了我的问题
https://stackoverflow.com/questions/35698711
复制相似问题