2012-11-07 13 views
11

Czy możesz mi powiedzieć o poniższym kodzie, że istnieje sposób na zmianę właściwości elementu imgx. Muszę zmienić wartość imgx.x za pomocą javascript. Czy jest jakiś inny sposób? Przeszukuję dokumenty qt, ale nie pomagam. Dzięki.Jak uzyskać dostęp do właściwości dzieci Wzmacniacza w 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" 
      } 
     } 
    } 
} 

Odpowiedz

18

Trzeba dodać obiekt do bezpośredniego dziecka Repeater (prostokąt w danym przypadku) i ustawić go jako cel dla tej właściwości dziecka wewnętrznego (obrazu w Twoim przypadku). Następnie można użyć mmm.itemAt(<index of the element>).<property> = value. Kod:

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

Następnie można zmienić właściwość tak: odpowiedź

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

Dzięki. jest bardzo pomocny. –

+0

@JuliusG w jaki sposób uzyskasz indeks tego, co klikniesz? – MrPickles

+1

@MrPickles zapoznaj się z metodą childAt (...): http://doc.qt.io/qt-5/qml-qtquick-item.html#childAt-method – JuliusG

2

JuliusG jest tuż przy użyciu itemAt. Ale nie jest wymagane, aby ustawić go jako cel dla właściwości w wewnętrznym podrzędnym (Obraz w twoim przypadku). Można ma swój kod, jak to jest i zamiast

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

użyj:

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

Nadzieję, że to pomaga.

Powiązane problemy