开源软件入门系列
不定期更新开源软件的入门教程和二次开发相关内容,欢迎大家阅读和留言交流
目前拟定的相关方向为:QtQCustomPlotVtkParaviewOpenFoamFreeCADCTK
这个月拟更新部分Qt相关的内容
1。1Qt多线程
1。2Qtmvc框架
1。3Qtmvvm框架
1。4Qtmfc支持
今天文章的标题为Qt多线程之QThread
基本介绍
在进行桌面应用程序开发时,假设需要处理较为复杂的逻辑,如果只用主线程,会导致卡顿,因为一个线程只能同时处理一件事。因此需要多线程,主线程处理窗口事件,其他子线程处理逻辑并将结果传递给主线程。
QT中使用多线程需注意以下事项:
1。默认线程为窗口线程,也叫主线程,负责窗口事件处理及窗口控件的数据更新。
2。子线程负责后台的业务逻辑,不能对窗口进行任何操作。
3。子线程与主线程之间的数据传递需要QT的信号和槽机制。
一。QThread
QT提供了一个线程类Qthread,接下来介绍需要用到的函数。
1。公共成员函数
boolisFinished();判断进程是否结束
boolisRunning();判断进程是否在进行
Prioritypriority();获取线程优先级
voidsetPriority(Prioritypriority);设置线程优先级
voidexit();退出线程
voidwait();等待线程任务完成,然后退出线程,一般会在exit函数后使用。
2。槽函数
voidquit();效果等同于exit
voidstart();启动线程
3。信号
voidfinished();线程结束后会发出该信号
voidstarted();线程开始时发出该信号
4。静态函数
QThreadQThread::currentThread();返回当前线程的指针
intQThread::idealThreadCount();返回可以运行的理想线程数,与当前电脑CPU核心数相同
5。任务处理函数
〔virtualprotected〕voidrun();子线程处理的任务写到该函数中,该函数为虚函数,因此需要建立子类继承QThread重写run,而且是protected,因此不能类外调用,使用时调用start(),start会自动调用run。
使用方法
QT提供多种建立子线程的方法,先介绍简单的一种。
第一步:创建一个类,使其继承QThread。
ClassMyThread:publicQThread
第二步:重写run函数,在函数内写子线程要处理的任务
第三步:在主线程创建子线程对象,即在mainwindow。cpp中如下操作:
MyThreadsubThreadnewMyThread;
第四步:调用start
subThreadstart();
实例演示
接下来通过实例演示QT多线程的使用,实现生成随机数。首先在UI里建立一个QListWidget,objectName改为rand,用于显示生成的随机数。然后建立一个按钮,objectName改为start,用于启动子线程。
建立类MyThread,基类设为QObject,生成之后注意将继承的父类改为QThread,此处修改类名为Generate不是必要,可根据需要自行更改。
重写run函数,注意增加需要的头文件,代码如下:
MyThread。h
recvNum函数用于接收主线程传过来的需要生成的随机数总数;
SendArray信号用于将生成的随机数传递给主线程
MyThread。cpp
QElapsedTimer
用于计算执行任务所需要的时间,单位是毫秒
mainwindow。cpp
主窗口析构时会发射destroyed信号,此时执行子线程的退出和delete操作。
main。cpp
此处由于QT版本为5。1。2,无法识别Qvector,因此需要注册类型。最新版QT不需要增加这一行代码。
运行结果
运行程序,点击start按钮,显示生成的随机数
应用程序输出当前线程地址以及生成的随机数数量和所需时间。
下期我们介绍下Qt多线程的第二个部分QObject::moveToThread的用法
刘会成提升电力产业的含金量含新量含绿量2022年太原能源低碳发展论坛期间,碳中和与煤炭高质量发展论坛暨第十二届全球新能源企业500强峰会召开。晋能控股电力集团党委书记董事长总经理刘会成作主旨发言。以下为发言内容整理随着
下次油价或大跌,预计下调超350元吨,油价9月21日晚调整在本周二晚进行的今年第17次油价调整中,油价重新上涨,实现了今年的第11次上调,根据油价调整规则,现在已经进入下一次油价调整的统计之中,受到这几天国际油价下跌影响,油价又出现了预计
刚刚发布!晋江2家上榜9月7日上午2022中国民营企业500强峰会召开会上全国工商联发布2022年中国民营企业500强晋江2家企业上榜分别是安踏体育用品集团有限公司福建百宏聚纤实业有限公司据了解,今年是
预防近视的几种安全有效方法现在我们这个孩子的近视发病率是越来越高了啊,大家可能会在自己孩子突然发现近视的时候会比较紧张,家长,这个时候呢,就不知道该怎么办了,我在这里给大家先介绍几种有科学证实的有效的安全的
NASA9月26日将直播双小行星重定向测试NASA的DART测试将于下个月启动,该航天局计划让太空爱好者有机会现场观看这一行动。DART测试已经进行了多年,NASA在2019年首次宣布DART。不过现在,测试的时间终于到了
iPhone14Pro售价公布7999元起9月16日发售iPhone14Pro和iPhone14Pro的售价正式公布,售价分别为999美元和1099美元,和iPhone13Pro和13ProMax的起售价相同,国行的售价仍然是7999元
华为投资100亿,在重庆建设超级工厂!预计2023年7月31日前完工税收政策,税收园区,详情了解公众号轻捷税众所周知,我国是基建狂魔,能走到的地方就一定有建筑。所以随着基建狂魔的一时兴起,华为和塞力斯的第三个工厂来了!这两者强强联手准备在重庆建设超
加拿大华人注意!回国政策有变!机票便宜了,最低697回国政策时刻牵动着加拿大华人的心。核酸检测入关手续隔离安排,这些都需要提前了解做好准备,无论哪步出岔子,都会影响到整个回国计划。最近,回国核酸检测又有了新变化,核酸检测要求变严,申
八位晚年定居内地的港星,有人创办工厂有人住山间别墅,各个幸福随着大陆的不断发展,香港地区的物价和房价又只升不减,所以很多香港老牌明星都选择来内地定居。一方面是因为发展工作可以更方便些,但更多的原因还是为了自己可以安度晚年。苑琼丹58岁苑琼丹
千亿级新材料碳纳米管性能优势研发壁垒产业链布局等碳纳米管属于一维纳米材料,具有高强度和高导电导热性的优秀性能,其下游应用主要涵盖新能源汽车产业3C数码产业半导体产业电力基础设施等领域。碳纳米管的大规模商业应用需求最主要来自锂电池
菠萝沟旁的那片矮树每一棵树,都有属于它的价值。题记树,是大凉山的底色。它们生长在这片历史悠久风景秀丽文化深厚的土地上,与当地彝族同胞世代相伴,与这里的许多老地名相关。壮美大凉山(买锐摄)树本来长在山