繁体   English   中英

如何在Qt中向QThread类的特定对象发出信号?

[英]How to emit signal to a specific object of a QThread class in Qt?

假设我们从QThread类创建了几个实例。 考虑到所有线程对象都是从同一Qthread类实例化的,因此我需要从一个线程对象向另一个线程对象发送消息。 通过发出信号,所有线程对象将接收发出的信号。 但是我只希望特定的对象(例如具有特定线程ID的对象)接收信号。 如何在Qt中进行?

谢谢。

信号和插槽在您的类中定义 ,但是您特定对象的信号连接到特定对象的插槽。 当您在一个线程中发射信号时,只有连接了插槽的对象才能接收该信号。

如果我对您的理解正确,则可能需要QSignalMapper

此类收集一组无参数的信号,并使用与发送信号的对象相对应的整数,字符串或窗口小部件参数重新发出它们。

请查看示例以获取更多信息,如果您不喜欢使用信号映射器,则可以始终在插槽中使用自定义过滤器。 因此,所有其他插槽(对信号不感兴趣)都可以忽略它。 没有办法用emit信号过滤信号,仅直接将其发送到指定的连接插槽。

信号的发送者无法确定谁接收该信号,并且连接到该信号的每个实例都将接收该信号。 这是信号/时隙机制实现的观察者模式所固有的。

我将充当派生线程(例如A(1,..,N))注册的中介者。 在调解器中,您需要实现逻辑,即来自A(i)的消息必须转到A(j)。 优点是A实例不需要彼此了解。 可以通过发布根据qt线程安全的事件来完成交互。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM