您当前的位置: 首页 >  qt

顺其自然~

暂无认证

  • 6浏览

    0关注

    1317博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

QThread的用法

顺其自然~ 发布时间:2022-07-07 13:52:50 ,浏览量:6

概述

       QThread类提供了一个与平台无关的管理线程的方法。一个QThread对象管理一个线程。QThread的执行从run()函数的执行开始,在Qt自带的QThread类中,run()函数通过调用exec()函数来启动事件循环机制,并且在线程内部处理Qt的事件。在Qt中建立线程的主要目的就是为了用线程来处理那些耗时的后台操作,从而让主界面能及时响应用户的请求操作。QThread的使用方法有如下两种:

  1. QObject::moveToThread()

  2. 继承QThread类

下面通过具体的方法描述和例子来介绍两种方法。

方法一. QObject::moveToThread()方法 方法描述
  1. 定义一个继承于QObject的worker类,在worker类中定义一个槽slot函数doWork(),这个函数中定义线程需要做的工作。
  2. 在要使用线程的controller类中,新建一个QThread的对象和worker类对象,使用moveToThread()方法将worker对象的事件循环全部交由QThread对象处理。(转移到线程中)
  3. 建立相关的信号函数和槽函数进行连接,然后发出信号触发QThread的槽函数,使其执行工作。
moveToThread的例子

       首先新建一个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()            
关注
打赏
1662339380
查看更多评论
0.1731s