2012-11-07 19 views
11

Aşağıdaki kod için imgx öğesi özelliklerini değiştirmenin herhangi bir yolu olduğunu söyleyebilir misiniz? Javascript kullanarak imgx.x değerini değiştirmek zorundayım. Yoksa başka yolu var mı? Qt dokümanlar aradım ama yardım etmiyorum. Teşekkürler.QML'deki Repeater'ın çocuklarının özelliklerine nasıl erişilir?

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

cevap

18

Sen Tekrarlayıcı (sizin durumunuzda Dikdörtgen) doğrudan çocuğa bir özellik ekleyebilir ve (sizin durumunuzda Resim) iç çocukta özellik için bir hedef olarak ayarlamak gerekir. Daha sonra mmm.itemAt(<index of the element>).<property> = value'u kullanabilirsiniz. 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" 
    } 
    } 
} 

Sonra böyle bir özelliği değiştirebilirsiniz:

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

Teşekkürler. çok yardımsever. –

+0

@JuliusG Tıkladığınız her şeyin dizinini nasıl alırsınız? – MrPickles

+1

@MrPickles, childAt (...) yöntemine bir göz atın: http://doc.qt.io/qt-5/qml-qtquick-item.html#childAt-method – JuliusG

2

JuliusG cevabı doğru itemAt kullanarak içindedir. Ancak iç çocukta mülk için bir hedef olarak ayarlamanıza gerek yoktur (sizin durumunuzdaki görüntü). o ve bunun yerine bu kullanım

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

taşımaktadır gibi kodunuzu sahip olabilir:
onPropertyChange: { mmm.itemAt(index).children[0].x = newValue //the index defines which rectangle you change } 

yardımcı olur Umut.

İlgili konular