使用Qt多线程
使用示例: https://www.cnblogs.com/mc-r/p/15839540.html
- 在项目中添加 QObject类。
- 使用信号与槽控制开关。
使用QThread创建线程是我们最常见的一种方式,步骤如下:
- 继承QThread
- 重写run()函数
- 通过start()函数启动线程
- 优点:可以通过信号槽与外界进行通信。
- 缺点:①每次新建一个线程都需要继承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大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/333234
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!