qt - 有没有办法在 qml 中以字符串格式获取其 id 的组件?
问题描述
在 javascript 的 qml 中的一个函数中,我有一个组件的 id。这是我正在尝试做的一个简单示例:
function teste(val) {
var elem = "objectId"
var objectThatINeed = submenu1.findObjectById(elem)
objectThatINeed.someValueIWantToChange = val
}
该功能findObjectById
不存在,它只是为了说明我想要做什么。
我想获得对该对象的引用(不,我不想直接访问它objectId.someValueIWantToChange = val
),然后更改属性。
如果id
不可接受,我看到可以使用的另一个属性是 objectName,甚至是自定义属性......
怎么能做这样的事情?
解决方案
在 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;
}
推荐阅读
- java - 倒计时结束后恢复应用
- java - 双编码 UTF-8 字符串 - MySql,Hibernate
- python - 刮掉阿里巴巴的产品
- cmake - 在 macOS 上使用 Ninja 进行 CMake GUI
- reactjs - 在 create-react-app 托管服务器上使用代理的 Axios 发布不起作用
- html - 如何让我的图像一直拉伸?
- excel - excel中包含名称和日期的行到列
- sql - SQL duplicate counting headache
- create-react-app - Koa and Create-React-App Router not found
- .htaccess - Apache proxy redirect rule for other domain and fallback to original