在论坛的帮助下,我动态创建了一些按钮,我将这些按钮分配给“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
最佳答案
您可以将对象实例传递给按钮操作。例如:
Component.onCompleted: {
...
for (var prop in change_screen.money_back){
var selectedObject = selected.createObject(...);
button.createObject(money_row,{...,
"action": [function(){ selectedObject.selected += 1; }],
...});
无论如何,我建议您使用Repeater元素来动态创建如此大量的对象。
关于QML - 2 个动态创建的元素之间的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14369599/