Qt编程之多线程

一、Qt多线程传统方法 Qt拥有QThread类,当需要使用多线程的时候,可以继承QThread类,然后重写run()方法。所有在线程中实现的代码,都将在run()函数中进行处理。
摘要由CSDN通过智能技术生成

本文是在观看了爱编程的大丙关于多线程的讲解后做的一篇笔记。

之后对Qt的多线程有了很系统的认知,真的特别感谢爱编程的大丙!!!

目录

一、Qt多线程传统方法::重写run()方法

1.继承QThread,重写run()方法

 2.主界面代码

 3.运行结果​


需求:

实现自动生成10000个数字,并将其进行冒泡和快速排序,排序的结果显示在应用程序界面上。并打印生成数字,冒泡和快速排序的线程ID和执行时间。

一、Qt多线程传统方法::重写run()方法

  Qt拥有QThread类,当需要使用多线程的时候,可以继承QThread类,然后重写run()方法。

所有的线程都是通过实例化对象来进行操作。

所有在线程中实现的代码,都将在run()函数中进行处理。

  该需求的实现很明显分为三个步骤

         ①生成数字      ②冒泡排序     ③快速排序

  那么每一个功能的实现都可以放在线程中进行,所以,三个步骤+一个主线程,这个程序可以分为4个线程来实现。读者也可以将三个步骤放在主线程中去实现,但是可能会发生程序无响应的问题,难以在功能执行完毕之前对窗口进行操作。

1.继承QThread,重写run()方法

Generate.h

#ifndef QGENERATE_H
#define QGENERATE_H

#include <QObject>
#include <QThread>
#include <vector>
#include <QElapsedTimer>

class Generate:public QThread
{
    Q_OBJECT
public:
    Generate();
protected:
    void run() override;
signals:
    void send_Array(vector<int> list);  //将生成的随机数发送给主线程,并在主线程显示出来
    void send_str(QString str);
private:
    int m_num;
    vector<int> m_num_list;
public:
    void recvNum(int num);
};

#endif // QGENERATE_H

该类用于实现生成随机数,继承了QThread类。前文提到,所有在线程中实现的代码,都将在run()函数中进行处理。所以在Generate.cpp中对run()函数进行重写。

Generate.cpp

#include "generate.h"

Generate::Generate()
{

}

void Generate::run()
{
    qDebug()<<"生成随机数的线程:"<<QThread::currentThread();
    QElapsedTimer time;
    time.start();  //开始
    for(int i =0 ;i <m_num ;i++)
    {
        m_num_list.push_back(qrand()%100000);
    }
    qint64 milsec = time.elapsed();
    qDebug()<<
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值