2017-07-06 135 views
0

我正在使用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組件的父級別?

+2


也爲訪問加載項,您可以使用裝載機的item財產? '屬性bool hasNavBar:loginLoader.item!== null? loginLoader.item.hasNavBar:false(或init值)'應該就夠了。 – sk2212

+0

我使用了別名,因爲這些屬性值可能會在運行時更改,但我想我總是可以使用'loginLoader.item。 ' – Luca

+0

那麼,使用我的方法不會阻止屬性綁定。 – sk2212

回答

0

我建議你使用sourceComponent而不是source Loader的屬性,以便輕鬆地爲裝入的項目賦值/綁定值。爲什麼使用別名

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"; 
}