有没有办法在qml中以字符串格式获取具有其id的组件?

时间:2019-03-04 10:49:01

标签: qt qml

在javascript的qml函数中,我具有组件的ID。 这是我要执行的操作的一个简单示例:

function teste(val) {
    var elem = "objectId"
    var objectThatINeed = submenu1.findObjectById(elem)
    objectThatINeed.someValueIWantToChange = val
}

函数findObjectById不存在,仅是为了说明我要执行的操作。

我想获得对该对象的引用(而且我不想像objectId.someValueIWantToChange = val一样直接访问它),然后更改属性。

如果id不可接受,我看到可以使用的另一个属性是objectName,甚至是自定义属性...

怎么做这样的事情?

1 个答案:

答案 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;
    }