在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.qml
在qrc
文件中不存在,则错误为
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");
当我使用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.qml
在qrc
文件中不存在,则错误为
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");