c++ - 如何通过Qt中的几个类对象发出信号?

标签 c++ qt signals slot emit

我有几个类:A类 - 最高类、B类和C类,它们在A类构造函数中初始化。在B类构造函数中初始化类B1,在类C构造函数中初始化类C1。 C1 对象和 B1 对象看不到对方。

每次我需要从C1类发送信号到B1类时,我连接C1和C,C和B,最后B和B1。因此,每次我的程序在 C1 类对象中发出信号时,它都会发送到 C 类对象,然后发送到 B,然后发送到 B1。 (图片上)这是正确的 Qt 方式吗?或者有更好的方法吗?

enter image description here

最佳答案

您可以向类 C 添加一个返回 C1 的接口(interface),也可以向类 B 添加一个类似的接口(interface)。然后,在创建类 C 和 B 后,类 A 可以请求 C1 和 B1,并将 C1 的信号连接到 B1 的插槽。

或者,如果您有很多此类情况,并且您绝对不想将类 C1 和 B1 暴露给 A,那么您可以创建自己的信号机制。某种“邮局”,类(class)可以在其中注册为接收者,并且类(class)可以向其中发送消息。在这种情况下,类 B1 将注册为接收者,类 C1 将发送消息。 C1 和 B1 对彼此一无所知。邮局类将 C1 的消息发送给 B1。这种“邮局”类也可以使用 Qt 的信号和槽来实现。

关于c++ - 如何通过Qt中的几个类对象发出信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17774372/

相关文章:

c++ - Qt,无法将不完整类型 'A *' 的参数转换为 'const QObject *'

ios - 什么原因信息可以很容易地收集到 iOS 信号处理程序中?

c++ - gettimeofday 异步信号安全吗?如果在信号处理程序中使用它会导致死锁吗?

c++ - 如何开始和停止收集 gprof 的配置文件数据

具有编译器的 C++ 类强制对象的唯一所有权语义

c++ - Arduino 端口 Bitschft

C++ 管理器数据字段

c++ - 如何借助QT中的任何API设置系统亮度?

c - signal() 调用未触发

python - 如何使用Delegate控制QTableView的行高