我想知道是否可以在QML中为转发器的子代分配单独的ID?
例如,如果我的中继器要创建10个矩形,如何为每个矩形分配唯一的ID?例如rec1,rec2等
谢谢。
答案 0 :(得分:2)
如上所述,id不是常规属性,不能在运行时设置或更改。您无法引用此属性,例如以下代码将不起作用:
console.log(obj.id);
与C ++最接近的id
类似物是变量名:
auto id = new Object();
当您可以引用名称但不能设置或更改名称时。
对于此问题,您可以使用objectName
或使用某些指定的访问功能来引用项目,例如:
Row {
id:row
anchors.centerIn: parent
spacing: 5
Repeater {
id: container
model: 10
Text {
text:"item" + index
objectName: "item" + index
}
Component.onCompleted: {
container.itemAt(5).text = "changed1";
findChild(row, "item6").text = "changed2";
}
function findChild(obj, name) {
for(var i = 0;i < obj.children.length;i ++){
if(obj.children[i].objectName === name)
return obj.children[i];
}
return undefined;
}
}
}
答案 1 :(得分:0)
只需将此属性添加到任何需要唯一ID的QML对象中即可:
readonly property string uniqueId: `${this}`.substring(`${this}`.indexOf("(0x") + 2).replace(")", "")