QT多线程 用一个小程序演示多种利用QThread实现多线程的方法 保姆级教学

利用QT中的QThread实现多线程的方法有很多种, 不同的场合下用不同的方法可以达到不一样的效果. 这里就把这几种常见的方法整理出来, 大家可以照自己的需要去选择.

写了个Qt的小程序来演示不同的QThread运用方式. 用的QT版本是5.15.2, QtCreator 版本是4.14.0

首先在Qt创建一个项目类名为QThreadLearn
ui的界面只需要放一个按钮用于触发程序 命名为pushButton, 利用转到槽自动生成槽函数

void QThreadLearn::on_pushButton_clicked()
{
   
}

我们要达到的目的是让程序执行从1到1000000的计数,然后把计数过程通过qDebug打印出来。
如果不用线程直接在按钮槽函数中实现用qDebug打印计数i的值,那么ui界面会在运行的时候卡死。槽函数代码如下

void QThreadLearn::on_pushButton_clicked()
{
   
     for (int i{
   0}; i<1000000; i++){
   
         qDebug()<<"i = "<<i;
     }
}

所以我们需要引用线程,实现让这个计数程序在线程里跑的步骤如下

第一步在头文件引入QThread

#include <QThread>

第二步再定义一个私有变量 thread

QThread *thread;

第三步让程序在thread里面跑

下面几种不同的写代码方式都可以实现目标的功能且界面不卡

1. 在同一个类里写一个全局函数counting(),然后让thread去执行这个函数
槽函数和全局函数counting的代码如下

void counting(int count)
{
   
    for(int i{
   0}; i<count ; i++){
   
        qDebug()<<"i ="<<i;//从0到10000000依次打印i的值
    }
}

void QThreadLearn::on_pushButton_clicked()
{
   
     thread = QThread::create(counting, 10000000);//把counting函数放进thread线程里执行, 把10000000传过去
     connect(thread,&QThread::</
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值