我有几个类:A类 - 最高类、B类和C类,它们在A类构造函数中初始化。在B类构造函数中初始化类B1,在类C构造函数中初始化类C1。 C1 对象和 B1 对象看不到对方。
每次我需要从C1类发送信号到B1类时,我连接C1和C,C和B,最后B和B1。因此,每次我的程序在 C1 类对象中发出信号时,它都会发送到 C 类对象,然后发送到 B,然后发送到 B1。 (图片上)这是正确的 Qt 方式吗?或者有更好的方法吗?
最佳答案
您可以向类 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/