-
我们不会总能保证任务在UI改变后,任务被立即执行完毕,比如,要进行多相机拍摄,硬件IO耗时还是很可观的
-
如果都写在主线程,那么UI卡住了,老板就会找你谈话:大熊迪,你这软件怎么这么卡,我双路志强大金牌+八路Tesla V100+1024G内存还不够你吃的?
-
不要觉得委屈,是时候改变了,使用多线程,只有双核I5也可以很嗨皮!废话说了很多…
- 新建一个类 这个是.h文件
#ifndef DEALTHREAD_H
#define DEALTHREAD_H
#include <QThread>
class DealThread : public QThread
{
public:
DealThread();
protected:
void run(); // 新线程入口
};
#endif // DEALTHREAD_H
- 这个是.cpp
#include "dealthread.h"
#include "QThread"
#include "iostream"
using namespace std;
DealThread::DealThread()
{
cout<< "New Thread Starting..." << endl; // 没调
}
// 重点理解
static int i = 0;
void DealThread::run(){
while (1) {
i++;
cout<<"heheDA!"<<endl; // 指示系统运行
cout<< i <<endl;
sleep(1);
}
}
- 在 mainwindow.h public 里面声明
// 新线程
DealThread * m_deal_thread;
- 在mainwindow.cpp 里面开启线程 ,我的方案是在启动的时候开启线程
// 创建新线程
m_deal_thread = new DealThread;
m_deal_thread->start();
- 记得退出时关掉线程,否则Qt编译器无响应,放在析构函数里面即可
m_deal_thread->exit();
- Reference
[1] https://www.cnblogs.com/xia-weiwen/p/10306089.html