2017-07-06 3 views
0

Ich verwende eine qml Loader Komponente, um eine Seite dynamisch in Ansicht zu schieben. Jetzt hat die Seite, die ich drücke, verschiedene Eigenschaften und ich würde gerne von der Loader-Komponente selbst darauf zugreifen. Ich kann jedoch keine Aliase für diese Eigenschaften erstellen. Also, habe ich so etwas wie:wie auf Eigenschaften von Artikel innerhalb Loader-Objekt zugreifen

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

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

Das in Invalid alias target location führt. Wie kann ich diese Eigenschaften auf die übergeordnete Ebene in der Loader-Komponente umleiten?

+2

Warum ein Alias? 'Eigenschaft bool hasNavBar: loginLoader.item! == null? loginLoader.item.hasNavBar: false (oder der init-Wert) 'sollte ausreichen. – sk2212

+0

Ich habe einen Alias ​​verwendet, da sich diese Eigenschaftswerte zur Laufzeit ändern könnten, aber ich könnte immer 'loginLoader.item' verwenden. ' – Luca

+0

Nun, mein Ansatz wird die Bindung von Eigenschaften NICHT verhindern. – sk2212

Antwort

0

Ich empfehle Ihnen, sourceComponent anstelle von source Eigenschaft des Loader für assign/bind Wert zu laden Element einfach.
Auch für den Zugriff geladen Punkt können Sie item Eigenschaft des Laders verwenden:

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