如果我的main.qml中有一个Loader元素,如下所示:
ApplicationWindow {
id: mainWindow
property int margin: 16
visible: true
width: pageLoader.implicitWidth
height: pageLoader.implicitHeight
Loader { //Loads some qml page
id: pageLoader
width: item.implicitWidth
height: item.implicitHeight
anchors.fill: parent
source: 'TestSourcePage.qml'
onStatusChanged: { //Approach#1
if(pageLoader.status == Loader.Ready) {
console.log("Ready")
console.log(item.implicitWidth)
}
}
Component.onCompleted: {//Approach#2
console.log(pageLoader.item.width)
}
}
}
在名为TestSourcePage.qml的文件中:
Item {
Rectangle {
color: 'red'
width: 700
height: 700
}
}
我发现无法获取已加载矩形的尺寸,因此不会相应地设置ApplicationWindow的尺寸。
在这两种方法(Component.onCompleted
和onStatusChanged
)中,console.log(item.implicitWidth)
或pageLoader.item.width
的输出为0.我想知道原因。
我不知道这是否是更好的做法。谁能给我一些指示?