moveToThread简单使用方法
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简单使用方法相关推荐
- JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性
一.什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的.停工时间,就是不能向用户提供服务的时间.高可用,就是系统具有高度可用性,尽量减少停工时间.如何用最简单的方法来搭建 ...
- 【CI3.1】CI框架简单使用方法
CI框架简单使用方法 1.回忆MVC1.1.M:模型,提供数据,保存数据1.2.V:视图,只负责显示,表单form1.3.C:控制器,协调模型和视图1.4.action:动作,是控制器中的方法,用于被 ...
- smarty mysql demo_PHP Smarty模版简单使用方法
本文实例讲述了PHP Smarty模版简单使用方法.分享给大家供大家参考,具体如下: Index.php: require('../libs/Smarty.class.php'); $smarty = ...
- 通过身份证号提取性别_身份证号提取生日、年龄、性别、籍贯,最简单的方法!...
上一期,Amy跟大家分享了如何从身份证号中提取出生日期.今天我们继续来讲如何提取年龄.性别.籍贯. 身份证号提取年龄 ✦思路:在E2单元格输入公式"=DATEDIF(D2,TODAY(),& ...
- 创建三维建筑可视化和虚拟现实的最快和最简单的方法
创建三维建筑可视化和虚拟现实的最快和最简单的方法 时长3小时12分 1280X720 Mkv 语言:英语+中文字幕(根据原英文字幕机译更准确)+原英文字幕 大小解压后:2.86G 共28小节课程 标题 ...
- scala akka_如何对Scala和Akka HTTP应用程序进行Docker化-简单的方法
scala akka by Miguel Lopez 由Miguel Lopez 如何对Scala和Akka HTTP应用程序进行Docker化-简单的方法 (How to Dockerise a S ...
- 上如何刻字_如何用简单的方法在零件表面刻字:这里就有你想要的答案
上一篇文章我们用solidworks软件的焊件模块来绘制了一个最简单的机架.此过程中用到了焊件的以下功能:结构构件.角撑板.只要以后画机架肯定要用到结构构件的,大家应该注意学习好这个最常用的功能,在这 ...
- 不用恐惧AI的高速发展,论击败阿法狗(零)最简单的方法
作者:刘锋 计算机博士,互联网进化论作者 10月19日凌晨,在国际学术期刊<自然>(Nature)上发表的一篇研究论文中,谷歌下属公司Deepmind报告新版程序AlphaGo Zero: ...
- PHP5.2.3+apache2.2.4的最简单安装方法
最近为了安装PHP+apache这个PHP开发环境,到处查找资料,网上众说纷纭,我试了好多版本都没有成功,原因是网上说的都是过时的版本的配置方法(如PHP4+apache2.0),随着PHP和apac ...
最新文章
- python postgresql跨数据库查询_Postgresql跨数据库查询
- GitLab上市首日大涨35%,市值逼近千亿,营收87%来自订阅服务
- IOS开发系列--IOS程序开发概览
- windows tensorrt python
- 函数 —— popen() fscanf() sprintf() 执行shell命令并获取结果
- react 不能往组件中传入属性的值为 undefined
- linux查看mysql表空间使用率_Oracle查看数据库表空间使用情况sql语句
- ​Redis的各种“坑”,你知道多少?
- C++11 并发指南------std::thread 详解
- struts2 iterator、append、merge标签总结
- 使用Redis存取数据+数据库存取(spring+java)
- 天津市计算机网络应用大赛,2017年天津市中等职业学校“圣纳·新道杯”技能大赛计算机应用技术技能比赛在我校开赛...
- linux常用vim命令大全,Linux基础入门 vim常用命令详解
- SQL 正则表达式 匹配方式
- html事件页面切换表格,表格页面切换快捷键 可以使用快捷键CTRL+TAB键
- ubuntu 19查看和修改时区
- 幼儿学习品质提升的培养策略问卷
- c语言奇数正偶数负,微原软件实验:统计正负数、奇偶数的个数
- ESP32-C3入门教程 系统篇①——FreeRTOS系统时钟Tick
- Android TextView中的文字通过SpannableString,设置不同的颜色,字体,不同文字段的点击事件