Есть ли способ получить компонент с его идентификатором в формате строки в qml? - PullRequest
0 голосов
/ 04 марта 2019

В функции в qml javascript у меня есть идентификатор компонента.Это простой пример того, что я пытаюсь сделать:

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

Функция findObjectById не существует, она просто иллюстрирует то, что я хочу сделать.

Я хочу получить ссылку на этот объект (и нет, я не хочу получать к нему прямой доступ, например objectId.someValueIWantToChange = val), а затем изменить свойство.

Если id не приемлемо, другоеЯ вижу, что можно использовать свойство objectName или даже пользовательское свойство ...

Как можно сделать что-то подобное?

1 Ответ

0 голосов
/ 04 марта 2019

В QML идентификатор на самом деле не является свойством, и его будет трудно получить (это больше похоже на имя переменной).Но вы можете использовать свойство типа 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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...