如何在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线程安全的事件来完成。
相关文章:
- 如何在qt中将信号和插槽与另一个对象连接 --解决了
- QObject::连接无法将信号连接到*this*对象的插槽
- 通过插槽和信号在不同线程中的两个qt对象之间进行通信
- Qt:如何通知对象已建立涉及它的信号槽连接
- 使用信号和插槽连接多个 UI 对象
- 为什么信号连接会使套接字客户端对象失效?
- 可以在 QObject::connect() C++中连接 QML 对象现有信号?
- 使用 enum 参数将 C++ 对象信号连接到 QML 信号处理程序
- 销毁 qml 对象后的信号槽连接
- 不同类别的 2 个对象之间的信号/插槽
- 两个对象QT之间的示例插槽/信号
- 与不同父母的班级中的对象之间发送信号
- 如何在Qt中向QThread类的特定对象发出信号
- 通过信号从QML接收QChart或QChartView对象
- PyQt5:使用自定义信号时 int 对象的错误转换
- 有没有一种方法可以将升压信号和插槽与不可复制的对象一起使用
- Qt 通过将对象移动到线程来跨线程发出信号
- 升压信号参考对象超出范围?
- 将所有对象信号连接到单个插槽
- 级联导航窗格:连接到另一个qml文件的对象信号