gpt4 book ai didi

qml - 从本地文件系统加载 qml 组件/文件

转载 作者:行者123 更新时间:2023-12-03 16:27:05 28 4
gpt4 key购买 nike

我的应用程序具有以下结构:

有一个 main.cpp,它从 qrc 文件中加载一个名为 main.qml 的文件。

qrc 的内容:

  • /qml/main.qml
  • /qml/CustomUiElement.qml
  • /qml/WidgetQmlInQrc.qml

  • 在这个 main.qml 中,我正在加载其他 qml 组件/文件,这些组件/文件也存储在 qrc 中。这按预期工作。

    主文件
    Component.onCompleted:{
    var component=Qt.createComponent("WidgetQmlInQrc.qml")
    widget=component.createObject(mainWindow,params)
    }

    我想在我的 main.qml 中使用存储在本地文件系统上的 qml 组件/文件。

    本地qml文件:/mnt/plugin/WidgetQmlExternal.qml
    import QtQuick 2.0;

    Rectangle {
    color:"green";
    CustomUiElement {
    }
    }

    首先,我尝试扩展 qml 导入路径:
    viewer->engine()->addImportPath("/mnt/plugin/"); 

    这没有用。

    之后,我尝试使用完整路径加载组件。
    现在找到并加载了WidgetQmlExternal.qml,但是找不到CustomUiElement.qml,因为外部qml无法访问qrc中的文件。
    Component.onCompleted:{
    var component=Qt.createComponent("/mnt/plugin/WidgetQmlExternal.qml")
    widget=component.createObject(mainWindow,params)
    }

    我如何解决这个问题/我必须改变我的应用程序的结构才能加载外部组件,这些组件再次重​​用我的一些自定义组件?

    最佳答案

    我也为此苦苦挣扎,直到我意识到您可以简单地为 url 添加前缀以强制它查看本地文件系统,例如

    Loader {
    source: "file:/mnt/plugin/WidgetQmlExternal.qml"
    }

    使用这种方法,Loader 加载的组件也可以使用 QRC 访问其他组件。希望有帮助。

    关于qml - 从本地文件系统加载 qml 组件/文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37000251/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com