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

时间:2013-07-21 16:22:10

标签: 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

1 个答案:

答案 0 :(得分:2)

您可以向C类添加一个返回C1的接口,以及一个类似于B类的接口。然后在创建C和B类之后,A类可以询问C1和B1并将C1的信号连接到B1的插槽。

或者,如果你有很多这种情况并且你绝对不希望将类C1和B1暴露给A,你可以创建自己的信号机制。某种类型的“邮局”,其中类可以注册为接收者,以及类可以发送消息的位置。在这种情况下,B1类将注册为接收器,C1类将发送消息。 C1和B1对彼此一无所知。邮局课程会将C1的消息发送给B1。这种“邮局”课程也可以使用Qt的信号和插槽来实现。