首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >两个没有直接关联的小部件之间的通信

两个没有直接关联的小部件之间的通信
EN

Stack Overflow用户
提问于 2022-07-16 17:03:07
回答 1查看 90关注 0票数 3

我有一个具有小部件的GUI,其中包含多个子小部件,如图中所示:

我想把"Widget 2-2“和"Widget 1-1”联系起来。我有不同的选择,但我不知道哪个更好。

1.传播信号

我的第一个想法是将发出消息传播到主Windows,然后将操作传播到目标小部件:

function

  • Widget 2-2发出信号

  • Widget 2捕捉发出和发出花药信号

  • 主窗口捕捉发出并调用Widget 1控制器1控制器函数调用Widget 1-1控制器function
  1. Widget 1-1使动作

优点

  • 所有的小部件只与它的父母和孩子

交谈

缺点

  • ,它可能有点凌乱的

2.创建包含所有信号的单例类。

另一个想法是在单例类中创建信号。然后Widget 2-2可以很容易地发出这些信号,Widget 1-1也可以轻松地侦听这些信号。小部件在体系结构中的相对位置并不重要,每个人都可以发射和连接信号。

优点

  • 发出并连接这些信号非常容易。每个人都能做到。--

缺点

  • 我觉得这是个非常糟糕的主意。可能将来会爆炸,但我不知道为什么。我更喜欢遵循最佳实践,而不是快速轻松地解决我的问题(目前.)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-16 17:15:44

单线程或静态初始化应该是最后的手段,因为它们会引起各种麻烦,特别是在多线程环境中。在这种情况下绝对不要这么做。

在本例中,我个人在我的项目中所做的是,在第一个小部件中发出一个信号,然后在第一个公共父部件中将该信号转发给第二个小部件,以便第二个小部件通过它的插槽来处理它。

至少对我来说效果不错。您可以在Qt中很好地转发信号,即将信号连接到信号。

第一个共同的父级将包含这两者,因此您可以使用它作为管理这两个组件的代理,或者在您的体系结构中使用更多的小部件。

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

https://stackoverflow.com/questions/73006164

复制
相关文章

相似问题

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