网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
天线制作 GPS 地标
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | Open source | GNU | Linux | BSD | Solaris | AIX | HP-UX | IRIX | Mac OS X | Minix | Tru64 | SCO UNIX | Network | Security | X-Window | Database | 应用服务 | Programming | 经典著作 | 永远的纪念 | 杂项
 当前位置: Home > Programming > QT > 文章  
Qt 的内部进程通信机制
文章来源: IBM Developerworks 文章作者: 续欣 发布时间: 2004-04-01   字体: [ ]  
 

QCopChannel *doChannel = new QCopChannel("QPE/Do", this);
connect(doChannel, SIGNAL(received(const QCString &, const QByteArray &)), this, SLOT(doMessage(const QCString &, const QByteArray &)));

  同时,需要在该类中定义相应的消息处理函数doMessage,

void Window1::doMessage(const QCString &msg, const QByteArray &args)
{
 QDataStream stream(args, IO_ReadOnly);
 
 if(msg == "Message1(QString)")
 {
  QString text;
  stream >> text;
  button->setText(text);
 }
 else if(msg == "Message2()")
 {
  close();
 }
}

  其中的Message1(QString)和Message2(QString)都是用户自己定义的消息,该函数中分别对这些消息进行了相应的处理。在该例中当收到带有参数的Message1消息时,将该字符串参数stream显示在按钮button上;当收到Message2消息时,将执行关闭Window1窗口的动作,当然用户可以根据需要自行编写相应的处理过程。

  另一方面,在类Class2中需要发出消息的函数function中利用QCopEnvelope发送消息:

void Class2::function()
{  
 QCopEnvelope e("QPE/Do", "Message1(QString)");
 e << param;
}

  这里发出了Message1消息,并将需要携带的参数param发送到管道中。

  通过这样的过程,用户可以很方便地实现不同对象、不同进程之间通信过程,而且可以根据需要在通信过程中任意传递参数。

  2、 信号-槽(Signal-Slot)机制

  在Qt中,有一种用于对象之间的通信:信号-槽机制,这种机制是Qt的核心机制,也是它区别于其他GUI工具的最主要的特征。在大多数GUI工具中,通常为可能触发的每种行为定义一个回调函数,这个回调函数是一个指向函数的指针。在Qt中,信号-槽机制取代了这种繁杂的函数指针,能够实现同样的功能。信号-槽机制可以携带任意类型、任意数量的参数,而且完全是安全的,不会引起系统的崩溃。

  所有由QObject类继承而来的类,或者是它的一个子类,都可以包括信号-槽机制。信号通常是当对象改变他们的状态时发出的,这就是一个对象在需要与其他对象通信时所需要做的一切,它并不知道是否有其他对象在另一端接收该信号。从这个意义上来说,这种机制实现了真正的信息封装,确保了对象可以被当作一个独立的软件构件来使用。

 
推荐文章
·QT的信号与槽机制介绍
·Qt中的多线程编程
 

 
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
相关分类
热点文章
·QT的信号与槽机制介绍
·Qt中的多线程编程
相关文章
·Qt中的多线程编程
·QT的信号与槽机制介绍
·GCC创建共享库
·Linux操作系统中用PHP构
·Linux如何处理当前运行
·Linux操作系统套接字编
·用户密码过期通知
·通用线程:Awk 实例,第
更多...
 
 

Copyright(c) 2001-2009 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统