Qt开启多线程QThread

使用Qt多线程

使用示例: https://www.cnblogs.com/mc-r/p/15839540.html

  1. 在项目中添加 QObject类。
  2. 使用信号与槽控制开关。

使用QThread创建线程是我们最常见的一种方式,步骤如下:

  1. 继承QThread
  2. 重写run()函数
  3. 通过start()函数启动线程
  4. 优点:可以通过信号槽与外界进行通信。
  5. 缺点:①每次新建一个线程都需要继承QThread,实现一个新类,使用不太方便。②要自己进行资源管理,线程释放和删除。并且频繁的创建和释放会带来比较大的内存开销。
    适用场景:QThread适用于那些常驻内存的任务。

示例:

 # 第一步, 添加一个 C++ 类
头文件
#ifndef MYTHREAD_H
#define MYTHREAD_H

#include <QThread>

class myThread : public QThread
    Q_OBJECT
public:
    explicit myThread(QObject *parent = nullptr);

protected:
    void run() override;  // 重写这个函数

signals:

};

#endif // MYTHREAD_H

cpp文件

#include "mythread.h"

myThread::myThread(QObject *parent) : QThread(parent)
{

}
// 重写run() 这个虚函数
void myThread::run()
{
    cout << "这是一个新线程:" << QThread::currentThreadId();
    tm = new QTimer();
    tm->start(100);
    connect(tm, &QTimer::timeout, this, [=]()
    {
        emit sendV(t1);
    });

}

main.cpp 入口文件

myThread* th = new myThread();
th.start();

 connect(mt1, &myThread::sendV,this,[=](int i)mutable
{
         ui->label->setText(QString("这个数是: %1").arg(i));
});
th->start();
th->quit();
th->wait();

delete th;

参考:https://blog.csdn.net/luoyayun361/article/details/97150788

原文链接: https://www.cnblogs.com/mc-r/p/12402008.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    Qt开启多线程QThread

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/333234

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午9:04
下一篇 2023年3月1日 下午9:05

相关推荐