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注册过。
注意事项:
研究怎么使用QCOP的过程中,遇到了一些问题,写出来,希望对别人有帮助。
1.A进程以服务器的形式运行(也就是加了-qws参数),B进程以客户端形式运行(未加-qws参数),那么A向B发送的消息,B是不能接收的。但B向A发送消息,A是可以收到的。
2.在嵌入式端不需要所有程序都加上-qws参数,只需要有一个程序以服务器形式运行,其他程序也都可以正常运行,这样才能由一端向另一端发送消息。
3.如果需要相互发送消息,只要另外运行一个带-qws参数的程序C,再启动这两个程序A和B(不加-qws),这样A和B就可以互通消息了。
QCopChannel的用法的更多相关文章
- EditText 基本用法
title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...
- jquery插件的用法之cookie 插件
一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...
- Java中的Socket的用法
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
- python enumerate 用法
A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...
- [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...
- 【JavaScript】innerHTML、innerText和outerHTML的用法区别
用法: <div id="test"> <span style="color:red">test1</span> tes ...
- chattr用法
[root@localhost tmp]# umask 0022 一.chattr用法 1.创建空文件attrtest,然后删除,提示无法删除,因为有隐藏文件 [root@localhost tmp] ...
- 萌新笔记——vim命令“=”、“d”、“y”的用法(结合光标移动命令,一些场合会非常方便)
vim有许多命令,网上搜有一堆贴子.文章列举出各种功能的命令. 对于"="."d"."y",我在无意中发现了它们所具有的相同的一些用法,先举 ...
随机推荐
- ruby正则匹配回车换行符
如果你使用/^.*$/这种正则是匹配不到回车换行符的. 所以应该像下面这么写: /^[\s\S]*$/
- 海康威视 NET_DVR_FindNextFile 的错误
public struct NET_DVR_FIND_DATA { [MarshalAs(UnmanagedType.ByValTStr, SizeConst = )] /// <summary ...
- IOS设计模式浅析之简单工厂模式(SimpleFactory)
概述 首先说明一下,简单工厂模式不属于23种GOF设计模式之一.它也称作静态工厂方法模式,是工厂方法模式的特殊实现.这里对简单工厂模式进行介绍,是为本系列后面的工厂方法和抽象工厂模式做一个引子. 定义 ...
- 销傲销售过程GSP管理系统功能概述
1 公司介绍 西安海思威软件有限公司于2009年2月注册成立,海思威软件公司隶属于海思威集团,位于交通十分便利的西安经济技术开发区.公司致力于中国本土式销售管理的研究与管理软件产品的开发,是 ...
- 诚聘:全栈开发人员,三线城市10-16K
北京快鸽联盟信息技术有限公司成立于2013年,专注于校园及社区快递和增值服务.目前已有十余家各地分部,并与上百所大学,各大快递和电商公司有密切合作,年处理快件量超千万,长期处于行业领先地位. 诚聘全栈 ...
- Javascript 严格模式
简介 严格模式是一种将更好的错误检查引入代码中的方法. 在使用严格模式时,你无法使用隐式声明的变量.将值赋给只读属性或将属性添加到不可扩展的对象等. 声明严格模式 可以通过在文件.程序或函数的开头添加 ...
- [emacs org-mode小技巧] org-indent-mode 让文档更容易阅读
刚发现Emacs的org-mode里面一个叫做 org-indent-mode 的minor mode对于阅读org-mode文档很不错,版面看起来清晰多了: 从上图可以看到,org-indent-m ...
- Why restTemplate.put() throws “HttpClientErrorException: 404 Not Found”
I make a put request RestTemplate restTemplate = new RestTemplate(); restTemplate.put(new URI(&quo ...
- CentOS下Red5安装
Red5介绍 Red5是一个采用Java开发开源的Flash流媒体服务器.它支持:把音频(MP3)和视频(FLV)转换成播放流: 录制客户端播放流(只支持FLV):共享对象:现场直播流发布:远程调用. ...
- CvMat 矩阵的使用方法和简单程序
一:CvMat* cvInitMatHeader( CvMat* mat, int rows, int cols, int type,void* data=NULL, int step=CV_AUTO ...