2012-11-07 13 views
11

क्या आप मुझे नीचे दिए गए कोड के लिए बता सकते हैं कि imgx तत्व गुणों को बदलने का कोई तरीका है। मुझे जावास्क्रिप्ट का उपयोग करके imgx.x मान बदलना है। या कोई और तरीका है? मैं qt दस्तावेज़ खोजता हूं लेकिन सहायक नहीं हूं। धन्यवाद।क्यूएमएल में एक पुनरावर्तक के बच्चों के गुणों का उपयोग कैसे करें?

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

उत्तर

18

आप पुनरावर्तक (अपने मामले में आयत) के प्रत्यक्ष बच्चे में कोई प्रॉपर्टी जोड़ते और आंतरिक बच्चे में संपत्ति (आपके मामले में छवि) के लिए एक लक्ष्य के रूप में सेट करने के लिए है। फिर आप mmm.itemAt(<index of the element>).<property> = value का उपयोग कर सकते हैं। कोड:

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

फिर आप इस तरह संपत्ति बदल सकते हैं:

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

धन्यवाद। यह बहुत उपयोगी है। –

+0

@ जुलिएस जी आप जो कुछ भी क्लिक करते हैं उसका सूचकांक कैसे प्राप्त करेंगे? – MrPickles

+1

@MrPickles को बच्चे पर एक नज़र डालें (...) विधि: http://doc.qt.io/qt-5/qml-qtquick-item.html#childAt- विधि – JuliusG

2

JuliusG के जवाब सही itemAt का उपयोग करने में है। लेकिन इसे आंतरिक बच्चे (आपके मामले में छवि) में संपत्ति के लिए लक्ष्य के रूप में सेट करने की आवश्यकता नहीं है। आप के रूप में यह और बजाय

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

उपयोग यह है अपने कोड हो सकता है:

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

आशा है कि यह मदद करता है।

संबंधित मुद्दे