如何访问loader对象中的item属性

时间:2017-07-06 08:35:30

标签: qt qml qtquickcontrols2

我正在使用qml Loader组件将页面动态推送到视图中。现在我推送的页面有各种属性,我想从Loader组件本身访问它们。但是,我无法为这些属性创建别名。所以,我有类似的东西:

Loader {
    id: loginLoader
    source: "qrc:/pages/IdPinLoginPage.qml"

    property alias hasNavBar: loginLoader.item.hasNavBar
    property alias hasStatusBar: loginLoader.item.hasStatusBar
}

这导致Invalid alias target location。如何将这些属性重定向到Loader组件中的父级?

1 个答案:

答案 0 :(得分:0)

我建议您使用sourceComponent而不是Loader的source属性来轻松地为已加载项目赋值/绑定值。
另外,对于访问加载项,您可以使用加载程序的item属性:

Loader {
    id: loader
    sourceComponent: Component {
        SampleItem {
            foo: 13         //assign values to loaded item properties
            bar: "aleyk!"
        }
    }
}

Text {
    text: loader.item.bar   //Access to loaded item properties
}

SampleItem.qml

import QtQuick 2.6

Item {
    property int foo: 0
    property string bar: "salam";
}