范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Qt开发多线程与界面组件的通信(下)

  一、多线程与界面组件的通信
  1、子线程更改界面组件状态的本质
  (1)、子线程 发射信号通知主线程 界面更新请求
  (2)、主线程 根据具体信号以及信号参数 对界面组件进行修改、
  2、另一种子线程通知主线程的方式 : 发送自定义事件
  (1)、自定义事件用于 描述界面更新 细节
  (2)、在 主窗口类 中重写事件处理函数event
  (3)、使用 postEvent函数(异步方式) 发送自定义事件类对象(抛到应用程序 的事件队列,然后分发出去)
  A、子线程 指定接收消息的对象 为主窗口对象
  B、 在event事件处理函数中更新界面状态
  自定义事件StringEvent.h #ifndef STRINGEVENT_H #define STRINGEVENT_H  #include  #include   //1.继承自QEvent //2.提供全局唯一Type值 //3.初始化列表里初始化QEvent是用Type值 //4.在接收事件的地方重写事件处理函数  class StringEvent : public QEvent {     QString m_data; public:     //提供全局唯一的Type值     static const QEvent::Type TYPE = static_cast(QEvent::User + 0xFF);     explicit StringEvent(QString data = " ");      QString data();     ~StringEvent(); };  #endif // STRINGEVENT_H
  自定义事件StringEvent.cpp #include "StringEvent.h" #include   StringEvent::StringEvent(QString data) :     QEvent(TYPE) {     m_data = data; }  QString StringEvent::data() {     return m_data; }  StringEvent::~StringEvent() {     qDebug() << "StringEvent::~StringEvent()"; }
  子线程UpdataThread.h #ifndef UPDATATHREAD_H #define UPDATATHREAD_H  #include  #include "StringEvent.h"  class UpdataThread : public QThread {     Q_OBJECT  private:     void run(); public:     explicit UpdataThread(QObject *parent = 0);      };  #endif // UPDATATHREAD_H
  子线程UpdataThread.cpp #include "UpdataThread.h" #include   UpdataThread::UpdataThread(QObject *parent) :     QThread(parent) { } void UpdataThread::run() {     QApplication::postEvent(parent(),new StringEvent("begin"));      for(int i=0; i<10; i++)     {         QApplication::postEvent(parent(), new StringEvent(QString::number(i)));//事件被POST之后就会被删除          sleep(3);     }      QApplication::postEvent(parent(), new StringEvent("end"));  }
  Widget.h #ifndef WIDGET_H #define WIDGET_H  #include  #include "UpdataThread.h" #include  #include   class Widget : public QWidget {     Q_OBJECT     UpdataThread m_thread;     QPlainTextEdit m_plainTextEdit; public:     Widget(QWidget *parent = 0);     bool event(QEvent *evt);     ~Widget(); };  #endif // WIDGET_H
  Widget.cpp #include "Widget.h" #include "StringEvent.h"  Widget::Widget(QWidget *parent)     : QWidget(parent) {     m_plainTextEdit.setParent(this);     m_plainTextEdit.resize(100,100);     m_plainTextEdit.move(20,20);       m_thread.setParent(this);//这是一个小技巧,为了post事件的时候能调用parent()来指定接收者     m_thread.start(); }  bool Widget::event(QEvent *evt) {     bool ret = true;      if(evt->type() == StringEvent::TYPE)     {         StringEvent* se = dynamic_cast(evt);         if(se != NULL)         {             m_plainTextEdit.appendPlainText(se->data());         }     }     else     {         ret = QWidget::event(evt);     }      return ret; }  Widget::~Widget() {      }
  main.cpp #include  #include "Widget.h"  int main(int argc, char *argv[]) {     QApplication a(argc, argv);     Widget w;     w.show();          return a.exec(); }二、小结
  (1)、Qt可以发送 自定义事件 在子线程中操作界面组件
  (2)、必须使用 postEvent函数 发送自定义事件(异步方式 )
  (3)、发送的事件对象 必须在堆上创建
  (4)、子线程 创建时必须附带模板对象的地址信息 
  【领QT开发教程 学习资料,点击下方链接莬费领取↓↓ ,先码住不迷路~】
  「链接」

土到极致就是潮?1280的大牌新款红马甲,原来宋丹丹24年前就穿过要说冬天最受欢迎的时尚单品是什么?那么,羽绒服一定名列前茅,可是想要将羽绒服穿出显瘦又高级的效果,难度还是挺高的,所以羽绒马甲便横空出世了。很多人觉得羽绒马甲非常老土俗气,就是上了聪明的女人穿大衣从不搭配牛仔裤,瞧瞧这些素人穿搭,美得多高级秋冬季节大衣的出镜率总是很高,利落的剪裁搭配上颇具质感的材质,各种搭配场合都可以轻松hold住,演绎出高级又内敛的时髦范儿,属于衣橱里穿多久都不会过时的款式。但是,要想让大衣的搭配美貌贤淑,怡静淡雅头条作者云开日初美貌贤淑虞美人,怡静淡雅婉约纯。天生丽质自然美,抬手举足一溪云。头条作者云开日初软玉温香玉芙蓉,曼妙翩翩月西楼。貌美如花嫦娥舞,人间也有仙子秀。头条作者云开日初疫情在两件事情上我坚持了爱国情怀我从来不羡慕别人用苹果手机,因为我更爱国产的oppo和华为,这辈子我都不会买苹果,三星手机,不是他们手机不好,只是我坚持喜欢我们的国产手机。前几年苹果手机真的是非常的火,每出一款新行业资讯一文看遍飞傲桌面HiFi系统重磅新品!1月11日,飞傲隆重召开线上发布会,向大家带来了桌面HiFi系统多款新品,涵盖了多个品类,包括桌面数播解码耳放一体机R7桌面有源音箱SP3头戴式耳机FT3等,外观协调,视觉统一。数企业Windows设备出现开始菜单和任务栏快捷方式消失问题IT之家1月13日消息,微软表示,其正在调查Windows中的一个问题,该问题导致开始菜单或任务栏中的应用程序快捷方式消失。今天上午,多名IT管理员在Twitter和Reddit上消费维权周报电子产品投诉较多,多涉产品质量售后等问题上周,澎湃新闻收到多起关于电子产品的投诉,多涉产品质量售后服务等问题。其中,有消费者投诉称,他2021年9月在戴尔电脑实体店购买了一台电脑,在一年质保期内先后两次因电脑发生故障而更性能之选!技嘉Z790AORUSELITEAX来了!距离第一批DDR5内存条上市已经有一段时间了,许多厂家生产的700系列芯片组主板也大多都有支持DDR5的版本,同时DDR5内存条的价格也开始有所下滑。GOELITE,够给力,技嘉作三折的StudioDisplay?聊聊LG刚发售的NanoIPSBlack显示器27UQ85027寸的4K显示器,是很多人升级4K显示器的首选,价格尺寸性能都更容易被接受。作为自有面板线的LG,最近也更新了NanoIPSBlack面板加持的27UQ850。4000左右价位的如何在上更好的学习今日头条的功能在不停的进化,现在它的许多功能可以帮助我们更好的学习,以下是以通过视频如何更好的学习英语为例来详细讲解,希望这篇文章能够更好的帮助大家提高自己,追逐梦想,更好的生活,浅析多功能智能电能表及能效平台在高校学生宿舍的应用摘要学生宿舍使用机械式电能表和普通智能电能表存在许多问题,为满足学生宿舍用电管理在智能用电管控智能收费管理和用电情况统计分析等方面的需求,新建学生宿舍将使用多功能智能电能表。现分析
强制停贷最近愈演愈烈的停贷事件扩大至18个省,将近100多个项目发怒发怒发怒。鬼城康巴什大家还记得吗?位于鄂尔多斯市的一个康巴什区,那时它建造了国内最豪华的楼盘,最后最后最后烂了大家想看的最美港姐李嘉欣我为钻石狂,为嫁入豪门而生李嘉欣,被誉为最美港姐香港第一美人,曾经,她是城中所有超级富豪竞相角逐的对象,她结婚时,一句流行语传遍香港听说李嘉欣结婚,所有的富太太都松了一口气。足见李美人的杀伤力是有多大。李嘉河南省总工会赴河南工运史馆扩建工程项目工地开展慰问活动来源中工网中工网讯据河南工人日报消息,高温天气里一线职工工作环境怎么样?劳动保护政策落实得如何?各级工会始终高度关注。近日,河南省总工会副主席党组成员一级巡视员杨会卿赴河南工运史馆Letme的老婆已经怀孕,30w的求婚钻戒曝光,也是电竞圈的女粉前言S12赛季的比赛已经正式开始了,相信绝大多数的玩家都关注了最近一段时间的夏季赛,lpl赛区的对抗是非常激烈的,rng战队作为今年的msi冠军,他们的状态调整的还算可以,就算经历制裁之下的俄罗斯(上)俄罗斯能扛过西方的联合制裁吗?尽管俄罗斯央行多年来一直在努力建立一个庞大的多样化的外汇储备,从而应对风险,但是俄罗斯卢布仍然陷入了巨大的危机。考虑到欧洲对俄罗斯天然气的依赖,欧洲会从自身利益的角度出发,不会完全揭秘高比例送转股91只除权以来股价上涨证券时报数据宝统计,2021年共484家公司分配方案中包含送转,送转比例在10送转5以上的有139家。2021年高比例送转公司中,深市主板有3家沪市主板有3家创业板有122家北交所中澳关系的缓和,不可能建在雷区上来源环球时报环球网美国和澳大利亚一些媒体12日炒作澳总理阿尔巴内塞拒绝北京四点要求的消息,编织了一个北京向堪培拉施压而阿尔巴内塞顶住压力不妥协退让的故事。这表面上好像是对阿尔巴内塞淮河能源吸收合并淮南矿业获安徽省国资委批复中证网讯(王珞)淮河能源(600575)7月12日晚间公告,公司于2022年7月12日收到淮河能源控股集团有限责任公司转发的安徽省人民政府国有资产监督管理委员会作出的省国资委关于淮深夜干大事!我国天链又添一星,为载人航天器提供加强版通信中国经济周刊经济网讯(记者贾璇)一觉醒来,又添一星。7月13日00时30分,我国在西昌卫星发射中心使用长征三号乙运载火箭,成功将天链二号03星发射升空,卫星顺利进入预定轨道,发射任安倍晋三94岁的母亲首相背后的女人,她是安倍家族最后的希望吗2022年7月8日上午,一个骇人听闻的词条突然空降热搜安倍晋三遭枪击受伤倒地!原来,前日本首相安倍晋三在奈良市进行街头演讲时,竟然被一个伪装成摄像师的刺客,在身后3米处击中胸部和颈为国家做事军事科学院国防科技创新研究院赴酒泉卫星发射中心开展任务攻关期间,组织赓续红色基因专题教育。李奕辰摄科研人员参观研究院两弹一星精神文化馆,赓续传承老一辈科学家的崇高精神。李奕辰摄又是