Qt的多线程实现可分为两种实现方法,其一为继承QThread,并重写其run函数以实现多线程,而另一种则是本文将介绍的moveToThread,即将继承QObject中的类通过moveToThread函数来转移至一个Thread中以实现多线程。

代码说明

首先先自定义一个类Threadwork继承QObject,并在类中定义一个让子线程来实现的函数thread:

class Threadwork : public QObject
{Q_OBJECT
public:Threadwork();
public slots:void thread();};

之后就可以在Threadwork.c中去查看相应的构造函数以及成员函数的线程Id:

Threadwork::Threadwork()
{qDebug()<<"主线程:"<<QThread::currentThreadId();
}
void Threadwork::thread()
{qDebug()<<"子线程:"<<QThread::currentThreadId();
}

在mainwindow.h中定义了相关信号以及变量


class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = nullptr);~MainWindow();
signals:void work();private:Ui::MainWindow *ui;QThread *SonThread;Threadwork *MainThread;};

最后就可以在mainwindow.c中实现多线程的使用。构建信号与槽函数,使用moveToThread构建子线程。

MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);ChildThread= new QThread;MainThread = new Threadwork;connect(this,SIGNAL(work()),MainThread,SLOT(thread()));MainThread -> moveToThread(ChildThread);ChildThread-> start();emit work();}

最终显示出子线程确实与主线程不在同一线程。

moveToThread简单使用方法相关推荐

  1. JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

    一.什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的.停工时间,就是不能向用户提供服务的时间.高可用,就是系统具有高度可用性,尽量减少停工时间.如何用最简单的方法来搭建 ...

  2. 【CI3.1】CI框架简单使用方法

    CI框架简单使用方法 1.回忆MVC1.1.M:模型,提供数据,保存数据1.2.V:视图,只负责显示,表单form1.3.C:控制器,协调模型和视图1.4.action:动作,是控制器中的方法,用于被 ...

  3. smarty mysql demo_PHP Smarty模版简单使用方法

    本文实例讲述了PHP Smarty模版简单使用方法.分享给大家供大家参考,具体如下: Index.php: require('../libs/Smarty.class.php'); $smarty = ...

  4. 通过身份证号提取性别_身份证号提取生日、年龄、性别、籍贯,最简单的方法!...

    上一期,Amy跟大家分享了如何从身份证号中提取出生日期.今天我们继续来讲如何提取年龄.性别.籍贯. 身份证号提取年龄 ✦思路:在E2单元格输入公式"=DATEDIF(D2,TODAY(),& ...

  5. 创建三维建筑可视化和虚拟现实的最快和最简单的方法

    创建三维建筑可视化和虚拟现实的最快和最简单的方法 时长3小时12分 1280X720 Mkv 语言:英语+中文字幕(根据原英文字幕机译更准确)+原英文字幕 大小解压后:2.86G 共28小节课程 标题 ...

  6. scala akka_如何对Scala和Akka HTTP应用程序进行Docker化-简单的方法

    scala akka by Miguel Lopez 由Miguel Lopez 如何对Scala和Akka HTTP应用程序进行Docker化-简单的方法 (How to Dockerise a S ...

  7. 上如何刻字_如何用简单的方法在零件表面刻字:这里就有你想要的答案

    上一篇文章我们用solidworks软件的焊件模块来绘制了一个最简单的机架.此过程中用到了焊件的以下功能:结构构件.角撑板.只要以后画机架肯定要用到结构构件的,大家应该注意学习好这个最常用的功能,在这 ...

  8. 不用恐惧AI的高速发展,论击败阿法狗(零)最简单的方法

    作者:刘锋 计算机博士,互联网进化论作者 10月19日凌晨,在国际学术期刊<自然>(Nature)上发表的一篇研究论文中,谷歌下属公司Deepmind报告新版程序AlphaGo Zero: ...

  9. PHP5.2.3+apache2.2.4的最简单安装方法

    最近为了安装PHP+apache这个PHP开发环境,到处查找资料,网上众说纷纭,我试了好多版本都没有成功,原因是网上说的都是过时的版本的配置方法(如PHP4+apache2.0),随着PHP和apac ...

最新文章

  1. python postgresql跨数据库查询_Postgresql跨数据库查询
  2. GitLab上市首日大涨35%,市值逼近千亿,营收87%来自订阅服务
  3. IOS开发系列--IOS程序开发概览
  4. windows tensorrt python
  5. 函数 —— popen() fscanf() sprintf() 执行shell命令并获取结果
  6. react 不能往组件中传入属性的值为 undefined
  7. linux查看mysql表空间使用率_Oracle查看数据库表空间使用情况sql语句
  8. ​Redis的各种“坑”,你知道多少?
  9. C++11 并发指南------std::thread 详解
  10. struts2 iterator、append、merge标签总结
  11. 使用Redis存取数据+数据库存取(spring+java)
  12. 天津市计算机网络应用大赛,2017年天津市中等职业学校“圣纳·新道杯”技能大赛计算机应用技术技能比赛在我校开赛...
  13. linux常用vim命令大全,Linux基础入门 vim常用命令详解
  14. SQL 正则表达式 匹配方式
  15. html事件页面切换表格,表格页面切换快捷键 可以使用快捷键CTRL+TAB键
  16. ubuntu 19查看和修改时区
  17. 幼儿学习品质提升的培养策略问卷
  18. c语言奇数正偶数负,微原软件实验:统计正负数、奇偶数的个数
  19. ESP32-C3入门教程 系统篇①——FreeRTOS系统时钟Tick
  20. Android TextView中的文字通过SpannableString,设置不同的颜色,字体,不同文字段的点击事件

热门文章

  1. 有状态和无状态(Stateful vs Stateless)
  2. python爬虫爬取糗事百科
  3. frp客户端(frpc) 安装及使用
  4. IOC和DI 的区别
  5. Linux服务器相关知识记录
  6. 财付通安全性存疑:资金频被盗刷
  7. Asp.Net Web Api 部署------远程连接云服务器
  8. 汽车PKE无钥匙操作方案
  9. 建行支付接口 php,ecshop下用php语言和jar包实现建设银行在线支付接口
  10. 涂鸦 WB3S 固件烧写后无法运行