Der*_*bee 5 qt dbus publish-subscribe
我需要实现一个简单的消息总线:
我正在考虑使用QSignalMapper来标记"命名事件",然后从插槽重新发出或将发布者信号连接到用户的信号......
有什么建议吗?或者我应该采用相对简单的设计模式?
PS:在Windows上使用D-Bus的AFAICS,您需要安装"第三方"软件才能使用Qt.
为什么不只使用一个专用的 QObject 子类作为消息总线呢?在那里,您定义可能通过消息总线交换的所有信号,并提供发出这些信号的相应通知方法。现在,每个想要接收“消息”的组件都可以连接到感兴趣的信号。
如果您想要更通用的方法,请使用与以前相同的方法。然而,(单例)QObject 子类现在只有一个“message(QByteArray)”信号和一个发出该信号的“sendMessage(QByteArray)”公共方法。您可能还想将发送消息方法声明为槽,以防万一您想将另一个信号连接到发送方法。
我自己使用这些方法并且效果非常好。即使不同的线程也可以使用这种机制相互通信,不会出现任何问题。如果您使用 QByteArray 方法,您将得到类似于 DBus 的东西。您可以序列化和反序列化消息,并自动确保所有消息接收者都获得自己的消息副本,并享受并行计算带来的所有好处。
| 归档时间: |
|
| 查看次数: |
1299 次 |
| 最近记录: |