如何使用findChild()
在c ++中查找对象,但是来自javascript?
答案 0 :(得分:1)
在QML方面,你通常无法访问Qt / C ++方面的父/子关系,但只能访问可视父/子关系,你需要求助于C ++。
你可以,例如创建一个对象,该对象公开一个带有QObject
的方法和一个名称,并调用该对象的函数findChild
。
如果你只想找到一个可视子项,你可能只是在JS中的可视化树上实现一个递归bfs并调用它。
但正如我在评论中所说的:如果你需要这个,你可能会搞砸其他地方而应该考虑一种方法,而不是findChild()
。在C ++中不建议使用它,在QML中肯定不是这样
由于它是递归搜索,它将尽力消除您的性能。 UI很容易包含一千个元素,您需要始终比较string
。此外,你会偷偷地访问你不会告诉任何你依赖的人的东西。
objectName
和调用findChild
的对象可能不在代码的同一逻辑部分,因此很容易被破坏,如果有人可能更改此对象或objectName,那么搜索不再存在的名称。
此外,如果您发现一个具有名称的对象 - 可能是正确的类型 - 仍然无法保证,它是正确的对象,因为objectNames不一定是唯一的。
总而言之,访问这样的对象并不是最好的设计 - 很难实现。
免责声明:我没有尝试过我提出的解决方案,因为我不想浪费时间。