首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >搜索QObject

搜索QObject
EN

Stack Overflow用户
提问于 2010-08-04 05:18:10
回答 2查看 139关注 0票数 1

我在一个多线程Qt应用程序上工作,想要连接一个线程中的一个信号与另一个线程中的插槽。我的问题是,我只有用于在项目范围的常量文件中定义的信令线程中设置QObject:objectName的字符串。

我的总体目标是避免将指针传递到位于其他对象内部几层的对象。我以前也这样做过,虽然它可以工作,但它给代码增加了很多不必要的复杂性。对于这个问题,这是一个非常不优雅的解决方案。

我想要做的是对应用程序中的所有QObjects进行全局搜索,以找到与该名称匹配的名称。在阅读Qt文档时,有很多关于如何搜索子对象的讨论,或者您可以使用父类进行搜索。但对于不同线程中的对象,这似乎不起作用。特别是,因为执行连接的对象不能直接访问拥有执行信令的对象的QThread。

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-04 05:32:35

对象树必须都属于同一线程。QObject状态的详细描述:

使用moveToThread()函数更改对象及其子对象的线程亲和性(如果对象有父对象,则不能移动)。

我看到了在Qt Creator中实现的查找对象问题的一个有趣的解决方案:它的plugin manager has a global object registry,您可以在其中添加和删除对象,并在以后按类型查询它们。这将很容易扩展它,并允许按名称查询。只需记住,名称不必是唯一的。

票数 1
EN

Stack Overflow用户

发布于 2010-08-04 05:22:21

您可以编写自己的name=>object地图。Qt的容器类是线程安全的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3400823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档