线程间通信:
1.自定义事件:postEvent();
2.信号与槽【本质也是通过自定义事件实现的】
注意:每个线程都有自己的事件循环

自定义事件:
1.从QEvent继承;
2.registerEventType();//会返回全局唯一的事件类型
3.QCoreApplication::postEvent();//异步方式发送事件,Qt本身接管事件周期,在事件处理后就会销毁他,所以new了后不要delete!!!!注意了new了后可以不delete!!!
4.重写event方法;//接收的那一方重写event

线程间通信:
1.使用自定义事件在线程通信;
2.可携带自定义数据;

3.逻辑清晰不易混乱;

程序运行截图如下:

代码如下:

customevent.h

#ifndef CUSTOMEVENT_H
#define CUSTOMEVENT_H#include <QEvent>
#include <QString>class CustomEvent:public QEvent
{
public:CustomEvent(const QString &msg);static QEvent::Type evType();static QEvent::Type m_eventType;QString m_msg;
};#endif // CUSTOMEVENT_H

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include "customevent.h"
#include <QLabel>class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = 0);~Widget();bool event(QEvent *e);protected:QLabel *m_label;
};#endif // WIDGET_H

customevent.cpp

#include "customevent.h"QEvent::Type CustomEvent::m_eventType=(QEvent::Type)registerEventType();CustomEvent::CustomEvent(const QString &msg):QEvent(evType()),m_msg(msg)
{}QEvent::Type CustomEvent::evType(){return m_eventType;
}

main.cpp

#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

widget.cpp

#include "widget.h"
#include <QEvent>
#include <QTimer>
#include <QDateTime>
#include <QCoreApplication>
#include <QThread>class SimpleThread:public QThread{
public:SimpleThread(QObject *receiver):m_receiver(receiver){}void run(){while(1){QThread::msleep(1000);CustomEvent *ce=new CustomEvent(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));QCoreApplication::postEvent(m_receiver,ce);}}QObject *m_receiver;
};Widget::Widget(QWidget *parent): QWidget(parent)
{m_label=new QLabel(this);SimpleThread *t=new SimpleThread(this);t->start();
}Widget::~Widget()
{}bool Widget::event(QEvent *e)
{if(e->type()==CustomEvent::evType()){CustomEvent *ce=(CustomEvent*)e;m_label->setText(ce->m_msg);m_label->adjustSize();e->accept();return true;}return QWidget::event(e);
}

Qt线程间通信-自定义事件相关推荐

  1. Qt线程间通信-信号与槽通信

    线程间通信: 1.自定义事件:postEvent(): 2.信号与槽[本质也是通过自定义事件实现的] 注意:每个线程都有自己的事件循环 下面先说明下信号与槽的通信: 下面这个程序的运行截图 模拟下载! ...

  2. Qt线程间信号槽传递自定义数据类型(qRegisterMetaType的使用)

    Qt线程间信号槽传递自定义数据类型(qRegisterMetaType的使用) #include <QMetaType> CFileDataModel::CFileDataModel(QO ...

  3. python线程间通信_python多线程之事件触发(线程间通信)

    执行结果: 那么,通过分析执行结果来看,您已经体会到了其中的秘密.... 再脑补一下: Python提供了Event对象用于线程间通信,它是由线程设置的信号标志,如果信号标志位真,则其他线程等待直到信 ...

  4. android线程间通信的几种方法_Android 技能图谱学习路线

    Java基础 Java Object类方法 HashMap原理,Hash冲突,并发集合,线程安全集合及实现原理 HashMap 和 HashTable 区别 HashCode 作用,如何重载hashC ...

  5. 进程间通信线程间通信

    一.多进程: 首先,先来讲一下fork之后,发生了什么事情. 由fork创建的新进程被称为子进程(child process).该函数被调用一次,但返回两次.两次返回的区别是子进程的返回值是0,而父进 ...

  6. 进程间通信和线程间通信

    进程间通信 转自  https://www.cnblogs.com/LUO77/p/5816326.html 线程间通信  https://www.cnblogs.com/jobs1/p/107840 ...

  7. android java 线程通信_Android 线程间通信

    进程与线程的区别? 在Android中,线程是跑在进程之中的,当手机打开一个APP就相当于打开了一个进程,比如:UI界面的更新,就是在主线程中完成的,我也可以自定义一些子线程来完成所需要的任务. 如何 ...

  8. 【Java 并发编程】线程简介 ( 进程与线程 | 并发概念 | 线程间通信 | Java 并发 3 特性 )

    文章目录 一.进程与线程 二.并发 三.线程间通信 四.Java 并发 3 特性 一.进程与线程 最开始是没有线程这个概念的 , 一个应用程序就是一个进程 , 应用程序运行时 , 如果还要处理与用户交 ...

  9. Net线程间通信的异步机制

    线程间通信 我们看下面的图 图1 我们来看线程间通信的原理:线程(Thread B)和线程(Thread A)通信, 首先线程A 必须实现同步上下文对象(Synchronization Context ...

最新文章

  1. 15-shell 输入/输出重定向
  2. Naveen Tewari先生荣获艾奇奖“年度商业创新领袖人物”
  3. 基于VTK与Qt的体绘制程序
  4. Element Swapping
  5. GLSL三种修饰符区别与用途(uniform,attribute和varying)
  6. Primes on Interval
  7. java native 接口_Java本地接口--Java Native Interface (JNI)
  8. Eclipse中导入Java项目出现“No projects are found to import”
  9. LDA主题模型(算法详解)
  10. switchhost提示没有切换权限
  11. 二、8086汇编命令大全
  12. 总结2020:5个月出版两本书,日更公众号是一种怎样的体验?
  13. 计算机为什么选择二进制?
  14. JavaEE项目的三层架构
  15. 使用Hexo 在本地搭建博客(一)
  16. 我用css精灵图拼接了自己的英文名字,不会还有人不知道精灵图技术吧?
  17. SoftMaker Office 2021中文版软件介绍-Office办公套件媲美Microsoft Office
  18. python-18-并行计算pp模块
  19. windows10桌面计算机图标删除吗,win10电脑桌面图标删除不了怎么办
  20. 手握千亿美金的孙正义,这次真的不能如愿了

热门文章

  1. 程序员年薪高达40万,为什么有很多程序员单身?看看网友怎么说!
  2. 给年终总结报告加分的技巧:手机上就能看的可视化长什么样?
  3. 汉游天下公司的一些感悟
  4. 详解JavaScript变量类型判断及domReady原理 写得很好
  5. 程序员谨防加班猝死之十大建议
  6. 今天的出了校门的即时通讯
  7. 飞鸽传书2012是否发布了?
  8. 上一页下一页_多页PDF文件也能很快合为一页PDF文件?这个小技巧可以办到
  9. oracle中提取日期时间的特定部分,Extract()截取時間的特定部分
  10. python如何高效办公_Python教你高效办公,自制屏幕翻译工具