在javascript的qml函数中,我具有组件的ID。 这是我要执行的操作的一个简单示例:
function teste(val) {
var elem = "objectId"
var objectThatINeed = submenu1.findObjectById(elem)
objectThatINeed.someValueIWantToChange = val
}
函数findObjectById
不存在,仅是为了说明我要执行的操作。
我想获得对该对象的引用(而且我不想像objectId.someValueIWantToChange = val
一样直接访问它),然后更改属性。
如果id
不可接受,我看到可以使用的另一个属性是objectName,甚至是自定义属性...
怎么做这样的事情?
答案 0 :(得分:1)
在QML中,id并不是真正的属性,将很难检索它(它更像是变量名)。但是您可以使用objectName
之类的属性来从特定的父母那里找到一个孩子:
Item {
id: theParent
Item {
objectName: "id1"
}
Item {
objectName: "id2"
}
Item {
objectName: "id3"
}
}
function findChild(id, root) {
for (var i = 0; i !== root.children.length; ++i) {
const child = root.children[i];
if (child.objectName === id) {
console.log("Found");
return child;
}
}
return null;
}