【问题标题】:Is there any way to import a folder containing Qml files, which is outside of project directory?有什么方法可以导入包含 Qml 文件的文件夹,该文件夹位于项目目录之外?
【发布时间】:2020-01-23 07:25:07
【问题描述】:

我有一组 Qmls,它们在一个文件夹中可用。现在我想在 Qt 项目中使用这些 Qml 文件。有什么方法可以在我的项目中导入这些 QML,而无需将 Qml 文件夹复制到我的项目目录中?

我的 .pro 文件如下所示:

RESOURCES += qml.qrc
RESOURCES += $$PWD/../QML_Assets


QML_IMPORT_PATH = $$PWD/../QML_Assets
QML2_IMPORT_PATH = $$PWD/../QML_Assets

立即生成的 qrc 如下所示:

D:/Qt_Projects/Dummy_sample/QML_Assets/QML_2.qml D:/Qt_Projects/Dummy_sample/QML_Assets/QML_1.qml

如果我添加 import "../QML_Assets/" 那么我的应用程序会立即启动并退出。 如果我不导入这个并评论从 QML_Assets 文件夹中使用的组件,那么它可以工作。

【问题讨论】:

    标签: qt qml


    【解决方案1】:

    在 Qt 中有几种可能性。

    首先,您可以在 Qt 项目文件 (.pro) 中设置变量以添加 QML 导入路径。

    # Additional import path used to resolve QML modules in Qt Creator's code model
    QML_IMPORT_PATH =
    QML2_IMPORT_PATH =
    

    在构造/启动 Qml 视图之前,您也可以使用 QQmlEngine::addImportPath 在 c++ 代码中直接执行此操作

    然后您可以使用 QQmlEngine::importPathList 检查为您的应用设置的导入路径

    这是关于 Import StatementsQML Import Path 的 Qt 文档

    更具体的:Importing QML Document Directories

    【讨论】:

    • 您能否分享一个链接,其中包含在 .pro 文件中使用 QML_IMPORT_PATH = " ....." QML2_IMPORT_PATH = "...." 的示例?
    • 这是您文件夹的简单路径。您可以在 Qt Demos/Examples 中找到示例。例如这里:doc.qt.io/qt-5/qtdoc-demos-coffee-example.html 查看 coffee.pro 文件
    • 你说的是正确的,但在咖啡示例中,所有资源都添加到 qrc 文件中。但是当我将导入文件夹 1 级向上移动时,它无法检测到,即使我放了 QML_IMPORT_PATH = $$PWD/../imports ,而不是 QML_IMPORT_PATH = $$PWD/imports。
    • 你确定你说的是 QML 导入路径而不是 qml 文件导入到 qrc 文件吗?你读过目录导入 -> doc.qt.io/qt-5/qtqml-syntax-directoryimports.html
    • 是的,我读到了同样的内容,但是当我这样做时,我的应用程序可以访问 qmls,但它随后以代码 -1 退出。
    猜你喜欢
    • 2021-01-03
    • 2017-09-29
    • 2016-02-11
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    相关资源
    最近更新 更多