2012-11-07 10 views
11

Potete dirmi per il codice sottostante che c'è un modo per cambiare le proprietà dell'elemento imgx. Devo cambiare il valore imgx.x usando javascript. O c'è un altro modo? Cerco i documenti qt ma non utile. Grazie.Come accedere alle proprietà dei figli di un ripetitore in QML?

Row { 
    Repeater { 
     id:mmm 
     model : 10 
     Rectangle{ 
      clip: true 
      width: 54 
      height: 80 
      color:"transparent" 
      Image { 
       id:imgx 
       //x:-160 
       //x:-105 
       //x:-50 
       x:0 
       source: "images/tarama_lights.png" 
      } 
     } 
    } 
} 

risposta

18

si deve aggiungere una proprietà al figlio diretto del ripetitore (Rectangle nel tuo caso) e impostarlo come un obiettivo per la proprietà nel bambino interno (immagine nel tuo caso). È quindi possibile utilizzare mmm.itemAt(<index of the element>).<property> = value. Codice:

Repeater { 
    id:mmm 
    model : 10 
    Rectangle{ 
    clip: true 
    width: 54 
    height: 80 
    color:"transparent" 
    property int imageX: 0 //adding property here 

    Image { 
     id:imgx 
     x: parent.imageX //setting property as the target 
     source: "images/tarama_lights.png" 
    } 
    } 
} 

È possibile quindi modificare la proprietà in questo modo: risposta

onPropertyChange: { 
    mmm.itemAt(index).imageX = newValue //the index defines which rectangle you change 
} 
+1

Grazie. è molto utile. –

+0

@JuliusG come otterresti l'indice di ciò che hai cliccato? – MrPickles

+1

@MrPickles dare un'occhiata al metodo childAt (...): http://doc.qt.io/qt-5/qml-qtquick-item.html#childAt-method – JuliusG

2

di JuliusG è proprio nel usando itemAt. Ma non è necessario impostarlo come destinazione per la proprietà nel figlio interno (Immagine nel tuo caso). È può avere il codice come è invece di

onPropertyChange: { mmm.itemAt(index).imageX = newValue //the index defines which rectangle you change } 

uso questo:

onPropertyChange: { mmm.itemAt(index).children[0].x = newValue //the index defines which rectangle you change } 

Speranza che aiuta.

Problemi correlati