概述
QThread类提供了一个与平台无关的管理线程的方法。一个QThread对象管理一个线程。QThread的执行从run()函数的执行开始,在Qt自带的QThread类中,run()函数通过调用exec()函数来启动事件循环机制,并且在线程内部处理Qt的事件。在Qt中建立线程的主要目的就是为了用线程来处理那些耗时的后台操作,从而让主界面能及时响应用户的请求操作。QThread的使用方法有如下两种:
-
QObject::moveToThread()
-
继承QThread类
下面通过具体的方法描述和例子来介绍两种方法。
方法一. QObject::moveToThread()方法 方法描述- 定义一个继承于QObject的worker类,在worker类中定义一个槽slot函数doWork(),这个函数中定义线程需要做的工作。
- 在要使用线程的controller类中,新建一个QThread的对象和worker类对象,使用moveToThread()方法将worker对象的事件循环全部交由QThread对象处理。(转移到线程中)
- 建立相关的信号函数和槽函数进行连接,然后发出信号触发QThread的槽函数,使其执行工作。
首先新建一个worker类,该类重点在于其doWork槽函数,这个函数定义了线程需要做的工作,需要向其发送信号来触发。Work类的头文件中定义了全部函数,其cpp文件为空,因此就不贴出来了。
Wroker.h的定义如下
// work定义了线程要执行的工作
#ifndef WORKER_H
#define WORKER_H
#include
#include
#include
class Worker:public QObject
{
Q_OBJECT
public:
Worker(QObject* parent = nullptr){}
public slots:
// doWork定义了线程要执行的操作
void doWork(int parameter)
{
qDebug()
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?