小编for*_*two的帖子

使用ZeroMQ实现消息总线

我必须开发一个消息总线,用于进程发送,接收彼此的消息.目前,我们正在Linux上运行,以便稍后移植到其他平台.

为此,我使用ZeroMQ over TCP.模式是带有转发器的PUB-SUB.我的总线作为一个单独的进程运行,所有客户端连接到SUB端口以接收消息,PUB发送消息.每个进程都通过唯一标记订阅消息.send来自进程的调用将消息发送给所有进程.一个receive通话将获取这一过程标有该进程的标签的消息.这工作正常.

现在我需要包装ZeroMQ的东西.我的客户只需要提供一个独特的标签.我需要维护一个全局的标签列表与ZeroMQ上下文和套接字的详细信息.当客户端说, initialize_comms("name");总线需要检查此名称是否唯一,创建ZeroMQ上下文和套接字.同样,如果客户端说receive("name");总线需要使用该标记获取消息.

总结我所面临的问题;

  1. 无论如何使用ZeroMQ提供的设施实现这一目标?
  2. ZeroMQ是否是正确的工具,或者我应该寻找像nanomsg这样的东西?
  3. 带有转发器的PUB-SUB是否适合这种模式?
  4. 或者,我在这里错过了一些东西吗?

sockets ipc zeromq

10
推荐指数
1
解决办法
4365
查看次数

从 QWidget 获取对象名称(如从 Qt 设计器看到的)?

我想在我的 Qt 应用程序中禁用除一组选定的小部件之外的所有小部件。

我想要做的是findChildren使用setEnabled(false).

QList<QWidget *> allWidgets = mainWindow->findChildren<QWidget *>("");
QList<QWidget*>::iterator it;
for (it = allWidgets.begin(); it != allWidgets.end(); it++) {
    if ((*it)->objectName() != "myTable")  // here, objectName is not working!!
    {
        (*it)->setEnabled(false);
    } 
}
Run Code Online (Sandbox Code Playgroud)

objectName()上面的if语句里面是行不通的。我在那里放什么?

c++ qt qwidget qtgui qobject

5
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×1

ipc ×1

qobject ×1

qt ×1

qtgui ×1

qwidget ×1

sockets ×1

zeromq ×1