QCopChannel的用法

来源:互联网 发布:linux安装jdk1.7 编辑:程序博客网 时间:2024/05/17 09:30

QCopChannel的用法

QT提供了很多的进程间通讯的方法,例如共享内存,QProcess等等。但有一种方法是嵌入式端所独有的,那就是Qt Communications Protocol(QCOP)QT通讯协议,这种方法只能用于QT Embeded。

网上关于这种用法的资料比较少,研究了半天才搞明白是怎么回事。

QCOP将进程间的通讯简化,使之就像使用QT中的信号与槽一样方便。

用法:

1.首先是编写接收消息的程序

channel = new QCopChannel(QString("/System/recevie"),this);connect(channel, SIGNAL(received(const QString&,const QByteArray&)), this, SLOT(processReceviedMsg(const QString&,const QByteArray&)));

这个/System/recevie可以随便填写,但在之后必须与发送端的程序设定的一致。 QCopChannel类中已经提供了一个信号received(const QString&,const QByteArray&),只需要将这个信号连接到自己写好的槽函数上,就可以使用了。 这个信号的第一个参数是类型,可以让你识别发过来的消息是什么类型,可以自由填写任意的字符串,只要你自己知道就行。 第二个参数,是数据,是你传送过来的数据。

2.编写发送消息的程序 发送端的编写就更简单了。

QByteArray data;QCopChannel::send(QString("/System/recevie"), "print(QString)", data);

只需要让send中的/System/recevie与接收端的一致,那么发送的消息就会发给所有注册了/System/recevie的进程。 还可以使用

QCopChannel::isRegistered(“/System/recevice”);

查询是否有这个channel注册过。

0 0
原创粉丝点击