从 QRC 文件加载 qmldir
Posted
技术标签:
【中文标题】从 QRC 文件加载 qmldir【英文标题】:Load qmldir from QRC file 【发布时间】:2015-07-30 14:20:04 【问题描述】:我正在尝试在 Qt 快速应用程序中使用 QML-material library。
但是当我尝试使用导入代码时,它说
导入材料 0.1模块“材料”未安装`
我也试过这个,但似乎不起作用:
导入“模块/材料”作为材料qml.qrc
看起来像这样,所有qmldir
文件都列出来了:
<RCC>
<qresource prefix="/">
<file>main.qml</file>
<file>modules/Material/qmldir</file>
<file>modules/Material/Extras/qmldir</file>
<file>modules/Material/ListItems/qmldir</file>
<file>modules/QtQuick/Controls/Styles/Material/qmldir</file>
</qresource>
</RCC>
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.addImportPath("qrc:/");
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
是否有我遗漏的东西或者无法在qrc
文件中使用qmldir
?
【问题讨论】:
你试过engine.addImportPath("qrc:/modules/");
吗?
@GrecKo 是的,但后来我得到了qrc:///modules/Material/[Name of component].qml:-1 File not found
,忘记提了。
我认为您需要将每个文件夹和文件添加到 qrc,而不仅仅是 qmldirs
@GrecKo 可以,谢谢。
@GrecKo 请提供问题的答案。
【参考方案1】:
您需要将模块所在的文件夹添加到导入路径中。
在这种情况下,它是qrc:/modules/
。
例子:
engine.addImportPath( "qrc:///modules" );
要使模块正常工作,您需要访问qmldir
文件,以及其中引用的所有文件。所以你需要将库的所有文件添加到qrc中。
【讨论】:
对于安装为带有.pri
文件的git 子模块的未修改qml-material
,您只需添加:engine.addImportPath( "qrc:///" );
。以上是关于从 QRC 文件加载 qmldir的主要内容,如果未能解决你的问题,请参考以下文章