2013-01-16 48 views
2

在論壇的幫助下,我動態地創建了一些按鈕,我在「createObject()」函數中爲一個屬性分配了一個函數。現在,在這個函數中,我想請參閱也動態創建的其他項目。QML - 兩個動態創建的元素之間的交互

(僞)代碼目前看起來是這樣的:

property var money_back: { '50e': 0, 
          '20e': 0, 
          '10e': 0, 
          '5e': 0, 
          '2e': 0, 
          '1e': 0, 
          '50c': 0, 
          '20c': 0, 
          '10c': 0, 
          '5c': 0, 
          '2c': 0, 
          '1c': 0 }; 
Row{ 
    id:money_row 
    spacing: 5 

    Component.onCompleted: { 
     var button = Qt.createComponent("BubbleButton.qml"); 
     var selected = Qt.createComponent("ChangeText.qml"); 
     for (var prop in change_screen.money_back){ 
      selected.createObject(money_row,{ 
             "id": "selected_"+prop, 
             "selected": "0" 
            }); 
      button.createObject(money_row,{ 
              "id": "button_"+prop, 
              // for testing purposes I wanted to make at least the first button work.. of course i want something like 'selected_+prop.selected' 
              "action": [function(){ selected_50e.selected += 1; }], 
              //"ps": ps, 
              "img_id.source": prop+".png", 
              "img_id.align": "center", 
              "color": "transparent" 
             }); 
     } 
    } 

我想到底做的是以下內容:每個硬幣/注創建按鈕,並點擊時,我想改變文本旁邊的內容..就像一個計數器,我點擊了多少次按鈕。

難道還有比下降與信號和這樣的道路更簡單的方法? (看起來很複雜)

感謝您的時間,並幫助 -m

回答

2

您使用對象實例傳遞給按鈕操作。例如:

Component.onCompleted: { 
    ... 
    for (var prop in change_screen.money_back){ 
     var selectedObject = selected.createObject(...); 
     button.createObject(money_row,{..., 
             "action": [function(){ selectedObject.selected += 1; }], 
             ...}); 

無論如何,我推薦你使用Repeater元素來動態地創建如此巨大的物體的數量。