文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Qt多线程及通过事件进行通信

Qt多线程及通过事件进行通信

时间:2010-07-22  来源:FreedomXura

可以通过QThread实现跨平台的多线程开发,Qt库负责在特定平台上的特定多线程实现。要采用QThread进行多线程开发,首先需要包含头文件: #include <QThread> 然后需要从QThread继承一个自己的线程类,暂作MyThread,关键是要实现QThread内的一个虚函数run。在run函数内部,最后一般都调用exec(),使得线程进入事件循环,否则线程主函数run运行结束,线程也就退出了。 class MyThread : public QThread { public:    MyThread(); public:    Dialog *parent; public:    void run(); }; 其中,parent存储的是创建该线程的窗口,也就是该线程的父线程,主要用于该子线程向父线程发送特定事件,以便进行线程间通信。
自定义消息首先需要包含头文件: #include <QEvent> 然后定义自己的事件值: const QEvent::Type MyEvent = (QEvent::Type)1234; 然后在run函数里面(实际上是指在任何你想要和父线程进行通信的地方,我这里简化为就是在run函数内部了)通过: QApplication::postEvent(parent, new QEvent(MyEvent)); 将该事件发送出去。 父线程内通过改写虚函数event,来使得能够捕获消息: bool Dialog::event(QEvent *event) {    if (event->type() == MyEvent)    {       QMessageBox::information(this, "INFORMATION", "This is son sented signal!");       return true;    }    return QWidget::event(event); } 这样,两个线程就能够同时运行并能够进行线程间通信了。 转自:http://blog.sina.com.cn/s/blog_4a33cfca0100db9s.html
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载