在qml中使用createComponent但是状态一直是error

Use createComponent in qml but the status is always error

当我使用Qt.createComponent动态创建组件时,stutas总是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()
    }
}

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

qrc:/MyPage.qml:-1 File not found"

如果我设置 MyPage.qml 的完整路径,我会得到 Network error.

当我将 SeriesSelectionPage.qml 文件添加到资源文件时,它起作用了。但它不应该是动态的?

我只是想找一个QML文件,在应用程序执行的时候动态加载,这样应用程序就可以根据用户的操作加载不同的QML。

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

Qt.createComponent() takes a url as its first argument. From the url documentation:

The url type refers to a resource locator (like a file name, for example). It can be either absolute, e.g. "http://qt-project.org", or relative, e.g. "pics/logo.png". A relative URL is resolved relative to the URL of the containing component.

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

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