Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何通过Qt中的几个类对象发出信号?_C++_Qt_Signals_Slot_Emit - Fatal编程技术网

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

C++ 如何通过Qt中的几个类对象发出信号?,c++,qt,signals,slot,emit,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类对象。(图中)这是正确的方法吗?还是有更好的方法 您可以向类C添加一个返回C1的接口,也可以向类B添加一个类似的接口。然后在创建C类和B类之后,类A可

我有几个类:类a-最高类、类B和类C,它们在类a构造函数中初始化。在B类中,构造函数初始化为B1类,在C类中,构造函数初始化为C1类。C1对象和B1对象互不可见

每次我需要从C1类发送信号到B1类,我连接C1和C,C和B,最后连接B和B1。所以每次我的程序在C1类对象中发出一个信号时,它都会先发送到C类对象,然后再发送到B类对象,然后再发送到B1类对象。(图中)这是正确的方法吗?还是有更好的方法


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

或者,如果您有很多这样的情况,并且您肯定不想将类C1和B1公开给A,那么您可以创建自己的信号机制。某种类型的“邮局”,在这里类可以注册为接收者,类可以发送消息。在这种情况下,B1类将注册为接收器,C1类将发送消息。C1和B1对彼此一无所知。邮局班将把C1的信息发送给B1。这种“邮局”类也可以使用Qt的信号和插槽来实现。

感谢“邮局”的想法。