当前位置:   article > 正文

Qt进程通信 QRemoteObjects_qremoteobjecthost

qremoteobjecthost
当项目开发需要,多进程通信时,qt提供了一个崭新的模块,那就是QRemoteObjects,因此,可以通过这个模块方便的实现。废话不多说,具体操作,上干货^_^:
  • 1

第一步,创建一个host,用于管理各个节点进程:
QRemoteObjectHost *host = new QRemoteObjectHost;
//必须设置一个uuid,方便标识是哪个进程的消息
QString uuid = QUuid::creatUuid().toString();
host->setHostUrl(QUrl(QString(“local:%1”).arg(uuid)));
第二步,用qt工具生成一个rep文件:rep_xxxx_source.h,例如叫做rep_CommonInterface_source.h,
然后加上信号和槽,用于通信的消息交互。
第三步,与host关联起来,这样一个接收管理的服务器就搭建完成。
CommonInterface *interface = new CommonInterface;
host->enableRemoting(interface);
启动子模块与传参:
QProcess *process = new QProcess;
//注意,要把uuid也给传进去,方便子进程回消息。
args << uuid;
process->start(path,args);
重复第二步即可做到消息发送,完成交互。

接下来,子进程回复消息流程:
QRemoteObjectNode *node = QRemoteObjectNode;
node->connectToNode(QUrl(QString(“local:%1”).arg(uuid)));
//用qt工具生成一个rep文件:rep_xxxx_replica.h,例如叫做rep_CommonInterfaceReplica_replica.h,
interface = node->acquire();
//建立信号槽即可实现交互
connect();

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/184724
推荐阅读
相关标签
  

闽ICP备14008679号