【问题标题】:qrc : cannot find file/directory issuesqrc:找不到文件/目录问题
【发布时间】:2013-07-03 10:02:52
【问题描述】:

我正在开发一个项目,其中所有 .js 和 .qml 文件都存储在 Qt 资源文件 (.qrc) 中。我试图在 qml 文件中导入外部目录。外部目录包含用于不同目的的其他 .qml 文件。我不想将这些外部目录包含到 .qrc 文件中。

当我添加导入路径时出现错误:

qrc:\example.qml : 找不到目录

有没有办法像这样包含外部文件或目录。

【问题讨论】:

  • 为什么要在资源文件中存储cpp和qml文件?它不是为此目的而设计的。
  • 您始终可以使用不以“qrc:”或“:”为前缀的完整路径。但如前所述,是什么让您将 cpp 和 qml 文件存储到此应用程序的资源中?这些在运行时不需要。
  • 嗨梅林和塞巴斯蒂安,这是我的问题中的一个错误。我已经纠正了。但是关于 qml,我认为使用 qrc 是最有效的方法,因为 qrc 会在程序执行期间将所有 qml 文件保存在其中。
  • 请您显示一些代码来说明您如何访问 qrc 中的文件以及 qrc 文件的文本?
  • 嗨,我使用这一行“import "file:/../qml" as QmlDirectory" 来导入一个名为 "qml" 的目录,之后我调用 QmlDirectory.Palette {} 来显示 Palette .qml 文件存储在“qml”目录中。这些行是在另一个“main.qml”文件中完成的,该文件存储在 qrc 文件中。

标签: qt qml


【解决方案1】:

在 Qt 论坛中找到了解决方案,http://qt-project.org/forums/viewthread/7047。要访问 QRC 之外的任何文件,请使用文件的“绝对文件路径”。 例如: 在 main.cpp 文件中:

QString path = QDir::currentPath(); //path where the exec is present

如果您的文件位于 exec 文件夹的 src/file.qml 中,那么您可以像这样访问它 (path += "/src/file.qml";),现在 path 是file.qml 的绝对文件路径。您可以在任何 QRC 文件中访问它。

QQuickView view; 
view.rootContext()->setContextProperty("myFile", path);
view.setSource("qrc:/main.qml"); 

在 main.qml 文件中:

Loader
{
    id: loadItem
    source: myFile
}
Item
{
   Component.onCompleted: loadItem.item
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多