2015-02-06 4 views
7

Potrebbe essere necessario leggere o scrivere su alcune proprietà dello LoadersourceComponent da alcune funzioni esterne.Come accedere all'oggetto QML all'interno del sourceComponent del programma di caricamento?

Qual è il modo di accedere alla proprietà x dell'oggetto all'interno di questo Loader di sourceComponent?

import QtQuick 2.0 

Item { 
    width: 200; height: 200 

    Loader { 
     anchors.fill: parent 
     sourceComponent: rect 
    } 

    Component { 
     id: rect 
     Rectangle 
     { 
      width: 50 
      height: 50 
      color: "red" 
      property int x 
     } 
    } 
} 

risposta

12

Quando è necessario esporre un oggetto interno/struttura al di fuori, si dovrebbe creare un alias ad esso.

import QtQuick 2.0 

Item { 
    width: 200; height: 200 
    property alias loaderItem: loader.item 

    Loader { 
     id: loader 
     anchors.fill: parent 
     sourceComponent: rect 
    } 

    Component { 
     id: rect 
     Rectangle 
     { 
      width: 50 
      height: 50 
      color: "red" 
      property int x 
     } 
    } 
} 
+0

Come questo aiuta ad accedere a 'x'? – vsz

+1

@vsz è possibile accedervi tramite 'loaderItem.x' – GrecKo

+0

Non sembra funzionare in caso di file esterni, con un' loader.source: "something.qml" '. Farò alcuni esperimenti e posta una nuova domanda se necessario. – vsz

Problemi correlati