如何从javascript通过Qml中的objectName获取对象? 如何在C++中找到类似于 Find Cub()/的对象,但是如何从JavaScript?PQ> PQ>在QML方面,通常无法访问Qt/C++侧的父/子关系,但只需查看父/子关系,就需要求助于C++。

如何从javascript通过Qml中的objectName获取对象? 如何在C++中找到类似于 Find Cub()/的对象,但是如何从JavaScript?PQ> PQ>在QML方面,通常无法访问Qt/C++侧的父/子关系,但只需查看父/子关系,就需要求助于C++。,qml,qt5,Qml,Qt5,例如,您可以创建一个对象,该对象公开一个方法,该方法接受该对象的QObject,并命名和调用该对象的函数findChild 如果您只想找到一个可视化的子级,那么可以在JS中的可视化树上实现一个递归bfs并调用它 但正如我在评论中所说:如果你需要这个,你可能会在其他地方搞砸,而应该考虑一种没有findChild()的方法。在C++中不推荐使用它,当然在QML中也不推荐使用。 由于这是一个递归搜索,它将尽最大努力降低您的性能。一个UI很容易包含上千个元素,您需要一直比较字符串。此外,你可能会通过偷偷

例如,您可以创建一个对象,该对象公开一个方法,该方法接受该对象的
QObject
,并命名和调用该对象的函数
findChild

如果您只想找到一个可视化的子级,那么可以在JS中的可视化树上实现一个递归bfs并调用它

但正如我在评论中所说:如果你需要这个,你可能会在其他地方搞砸,而应该考虑一种没有
findChild()
的方法。在C++中不推荐使用它,当然在QML中也不推荐使用。 由于这是一个递归搜索,它将尽最大努力降低您的性能。一个UI很容易包含上千个元素,您需要一直比较
字符串。此外,你可能会通过偷偷访问你没有告诉任何你依赖的人的东西来撒谎

objectName
和调用
findChild
的对象可能不在代码的同一逻辑部分,因此,如果有人更改此对象或objectName,而您正在搜索一个不再存在的名称,那么它很容易被破坏

此外,如果您发现一个具有名称的对象(可能是正确类型的对象),仍然无法保证它是正确的对象,因为objectname不一定是唯一的

总而言之,访问这样的对象并不是最好的设计——这是可能的

免责声明:我没有尝试过我提出的解决方案,因为我不想在上面浪费时间


你为什么要这么做。你不应该从C++中,所以你不应该从JS中做。也许你更应该问,你如何不用求助于
findChild()
ish就能解开谜语。我想更改“text”组件中的text属性。我有以下JSON
[{“id”:“text1”,“newText”:“Pizza”},{“id”:“text1”,“newText”:“Ramen”}]
。其中Id是objectName和文本组件的Id。如何获取具有此id的文本?我通过编写自己的函数
getObjectByName(name)
实现了这一点。幸运的是,我的所有对象都在一个
容器中,因此我可以使用
itemAt(I).objectName
contentChildren
进行线性搜索。这样做对吗?