一.本文介绍Qt线程的另一个使用方式,也是Qt官方推荐的方式,即moveToThread方式,楼主的理解就是,就是将这个线程使用方式【Qt之线程的使用(继承QThread重写run函数)】中run函数部分独立出来封装成一个工作类,然后把这个工作类装入另一个线程,依托这个线程进行执行。
二.实现过程
1.新建一个类,封装要执行的业务逻辑,其中要包括开始执行的槽函数以及执行完成的信号,其他方法可以根据需要具体的业务需要进行定义实现
cpp核心代码

void Worker::startWork()
{qDebug()<<QDateTime::currentDateTime()<<":开始工作了";for(int i=0;i<5;i++){qDebug()<<QDateTime::currentDateTime();}emit workFinshed();
}

2.调用过程核心代码:主要是将工作类移入线程,以及什么时候开始执行,执行完成需要干啥,后面两个都可以通过信号槽来完成

void Widget::on_pushButton_clicked()
{work = new Worker();thread = new QThread();connect(thread,SIGNAL(started()),work,SLOT(startWork()));connect(thread,SIGNAL(finished()),work,SLOT(deleteLater()));connect(work,SIGNAL(workFinshed()),this,SLOT(onWorkFinshed()));work->moveToThread(thread);thread->start();
}void Widget::onWorkFinshed()
{thread->quit();thread->wait();delete thread;thread=nullptr;
}

3.运行效果

三.工程源码

Qt之线程的使用(moveToThread方式)相关推荐

  1. Qt多线程之继承QObject(moveToThread方式)

    Qt多线程有两两种方式,第一种继承QThread,复写run()函数,但是run()和main()类似,run()函数才是子线程的入口函数,所以在设计到类的操作时,必须把对象或者指针放在run函数里面 ...

  2. Qt创建线程两种方式的区别

    使用QT创建线程有两种方式,方式A使用moveToThread,方式B是直接继承QThread.差异主要在于方式A的槽函数将会在新线程中运行,而方式B的槽函数在旧线程中运行. 结论如下: PS:旧线程 ...

  3. Qt跨线程使用moveToThread的注意事项(Cannot move to target thread )

    考虑以下场景: 主线程(Qt主事件循环)中跨线程调用某个函数func(如QtConcurrent::run),在func中又创建了另一个线程,从而将业务逻辑丢到该线程中 class CrossThre ...

  4. connect跨进程 qt_编写 Qt 跨线程异步调用器

    本文使用 Zhihu On VSCode 创作并发布 本文使用 CC BY-NC-SA 4.0 许可协议,转载请注明来源 一.设计背景 众所周知,Qt 的信号槽系统提供了线程安全的跨线程异步执行代码的 ...

  5. Qt的4种多线程实现方式

    一.QThread类的run 一.实现方法: 新建一个集成QThread的类,重写虚函数run,通过run启动线程 二.示例: class WorkerThread : public QThread{ ...

  6. Qt多线程的几种实现方式

    Qt多线程的几种实现方式 在Qt中经常会遇到耗时操作,需要并发执行,这个时候就要用到多线程.Qt的多线程有多种实现形式,这里介绍3种方式. 类实现形式 用类实现多线程是最传统的实现形式,思想是写一个继 ...

  7. QT子线程实现串口通信_学习记录

    QT子线程实现串口通信_学习记录 1 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个表格 设定内容 ...

  8. 线程、线程匿名内部类、解决线程不安全的方式

    线程 线程:正在运行的程序,是程序的执行路径:多线性 进程:是应用程序的载体,程序运行在虚拟机中.一个应用软件对应一个进程. 一个进程包含多个线程,一个线程对应一个进程. 好处:提高软件的运行效率 多 ...

  9. 线程返回值的方式介绍

    博客 微博 相册 收藏 留言 关于我 线程返回值的方式介绍 博客分类: 多线程 Java代码   在Java5之前,线程是没有返回值的,常常为了"有"返回值,破费周折,而且代码很不 ...

最新文章

  1. python实现矢量分级渲染_用 Python 撸一个 Web 服务器-第4章:动态渲染数据
  2. php验证码切换不刷新页面,Yii2解决验证码点击、刷新页面不刷新问题
  3. Gitlab搭建安装及使用中遇到的问题。
  4. 鸿蒙初开踏青时主要内容,鸿蒙初开踏青时
  5. POJ-1050(DP)
  6. python程序-第一个Python程序——在屏幕上输出文本
  7. win32API中文参考手册
  8. python代码案例详解-Python代码样例列表
  9. 图片裁剪cropper 示例
  10. 微软Google人才战主角首次开口:Google让我震撼(转)
  11. 【读书摘抄】人类简史
  12. css 模拟手机充电水滴效果
  13. 轻松下载Spotify上的音乐(mp3格式)
  14. 大数据是啥?大数据特点 大数据概念
  15. Win11远程协助灰色无法勾选?Win11远程协助不能选择的解决方法
  16. pytest-mian函数运行
  17. linux设置打开终端快捷键
  18. Matlab与V-REP联合仿真 | Joint simulation of MATLAB and V-REP
  19. nginx通过获取环境变量实现动态IP代理配置
  20. Python脚本——信手拈来的自动化测试工具

热门文章

  1. [专利与论文-11]:南京市职称申请 - 继续教育学时认定表如何填写
  2. linux S5PV210开发板刷系统浅析
  3. 测试必知必会的Mock数据方法
  4. 生成对抗网络原始文章算法详细介绍
  5. EasyExcel写文件的三种方式
  6. unc 目录不受支持
  7. element-plus+vite+guiplan注册页面添加验证码功能
  8. 钟汉良日记:公众号如何通过羊了个羊攻略,一天涨粉88+?
  9. idea 配置weblogic
  10. MATLAB使用教程(二)——在文件中编程——新手来看