在qml中使用createComponent,但状态总是错误



当我使用Qt.createComponent动态创建组件时,状态总是Component.error,但我不明白原因。

我是这样用的:

Rectangle{
    function loadTest(){
        function finishCreation() {
            if (component.status === Component.Ready) {
                console.log("ready")
            } else if (component.status === Component.Error) {
                // Error Handling
                console.log("Error loading component:", component.errorString());
            }
        }
        var component = Qt.createComponent("MyPage.qml");
        console.log(component.status)
        console.log("Error loading component:", component.errorString());
        component.statusChanged.connect(finishCreation);
        if (component.status === Component.Ready) {
            var button = component.createObject(container);
            console.log("ready")
        }
    }
    Component.onCompleted: {
        console.log("Completed Running!")
        loadTest()
    }
}

如果qrc文件中不存在MyPage.qml,则错误为

独有:/MyPage。qml:-1 File not found"

如果我设置MyPage.qml的全路径,我得到一个Network error

当我将SeriesSelectionPage.qml文件添加到资源文件时,它可以工作。但它不应该是动态的吗?

我只想找到一个QML文件,并在应用程序执行时动态加载它,以便应用程序可以根据用户操作加载不同的QML。

有人知道怎么做吗?我要疯了

Qt.createComponent()url作为其第一个参数。url文档:

url类型引用资源定位符(例如,像文件名)。它可以是绝对的,例如:"http://qt-project.org"或"亲戚",例如:"图片/logo.png"。相对URL是相对于包含组件的URL进行解析的。

因此,只要您在从QRC文件加载的文件中使用相对url,您就需要使用qrc方案:

var component = Qt.createComponent("qrc:/MyPage.qml");

相关内容

  • 没有找到相关文章

最新更新