在论坛的帮助下,我动态创建了一些按钮,我将一个函数分配给了“createObject()”函数中的一个属性。现在,在这个函数里面,我想引用其他动态的项目创建
(伪)代码目前看起来像这样:
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答案 0 :(得分: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元素动态创建如此大量的对象。