QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1629|回复: 5

请教关于QT中进程通信的问题!

[复制链接]
发表于 2005-6-10 17:00:40 | 显示全部楼层 |阅读模式
我现在在QT的界面上有一个,控制了2个同步执行的进程,现在我需要在父进程中调用子进程中的计算结果,应该是用进程通信吧?可是我不知道怎么实现呢?用管道?还是用信息?或是信号?太晕了!各位大侠请指教,最后能举例说明,我很菜的,以前没有用过进程间通信,所以一点都不懂!谢谢各位了!~>_<~
发表于 2005-6-10 21:37:23 | 显示全部楼层
我怎么好像看过QT本身可以呢,虽然我完全不懂Qt的说。
ipc真的不是1,2句话能说清楚,主要的有以下几种方法

1。 message机制
2。共享内存
3。管道
4。domain socket

自己看资料吧,有什么不懂的再问
回复

使用道具 举报

 楼主| 发表于 2005-6-12 11:30:32 | 显示全部楼层
问题是,书上写的好简单,也没有什么例子可以看,郁闷死了~~>_<~
回复

使用道具 举报

发表于 2005-6-13 11:03:24 | 显示全部楼层
使用QCustomEvent

在qt中要在不同进程中通讯,最好用Qt的事件机制。 Qt4之前的版本,进程之间是不能
使用SIGNAL和Slot的。

example:
这是声明一个客户事件。
[code:1]
class EvaAskForCustomizedPicEvent : public QCustomEvent
{
public:
        EvaAskForCustomizedPicEvent() : QCustomEvent(EvaRequestCustomizedPicEvent) {};
        void setPicList( const std::list<CustomizedPic> &list) { picList = list; }
        std::list<CustomizedPic> getPicList() { return picList; }
        void setQunID(const int id) { qunID = id; }
        const int getQunID() const { return qunID; }
private:
        std::list<CustomizedPic> picList;
        int qunID;
};
[/code:1]

这是如何使用, post到Qt的Event 循环中去,同时要声明谁是接收者。
[code:1]
                EvaAskForCustomizedPicEvent *event = new EvaAskForCustomizedPicEvent();  // declare a custom event
                event->setPicList(picList);  // set some parameters
                event->setQunID(qunID);

                // now we post it into Qt event loop
                QApplication::postEvent((QObject *)EvaMain::picManager, event);
[/code:1]

这是接收的实现, 在 picManager中, 实现
void customEvent ( QCustomEvent *e) 这个虚函数。
[code:1]
void EvaPicManager::customEvent( QCustomEvent * e )
{
        if(e->type() == EvaRequestCustomizedPicEvent){
                EvaAskForCustomizedPicEvent *se = (EvaAskForCustomizedPicEvent *)e;
                //你的处理
                ......
        }
[/code:1]
回复

使用道具 举报

发表于 2005-6-13 11:04:33 | 显示全部楼层
或者你使用全局变量,也可以。
回复

使用道具 举报

 楼主| 发表于 2005-6-13 15:33:26 | 显示全部楼层
谢谢yunfan!呵呵!*^_^*
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-5 21:46 , Processed in 0.043164 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表