获取QML中Loader元素中已加载项的维度

时间:2017-12-31 20:20:30

标签: qt qml

如果我的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.onCompletedonStatusChanged)中,console.log(item.implicitWidth)pageLoader.item.width的输出为0.我想知道原因。

我不知道这是否是更好的做法。谁能给我一些指示?

0 个答案:

没有答案