qt多线程的实战使用
//MyThread.h
#pragma execution_character_set("utf-8")//中文编码
class MyThread : public QThread
{
public:
explicit MyThread(QObject* parent) : QThread(parent)
{}
~MyThread(){}
void setWorkFunction(std::function<void()> runFun)
{
m_runFun = runFun;
}
protected :
virtual void run()
{
if(m_runFun)
{
m_runFun();
}
emit runFinish();
}
private :
std::function<void()> m_runFun = nullptr;
signals:
void runFinish();
};
//使用
std::function<void()> runFun = [=](){
//线程执行调用功能
};
MyThread *pMyThread = new MyThread;
connect(pMyThread, &MyThread::finished, this, [=](){
//线程完成
pMyThread->deleteLater();//释放线程
});
connect(pMyThread, &MyThread::runFinish, this, [=](){
//线程执行完成
pMyThread->quit();//退出线程
});
pMyThread->setWorkFunction(runFun);//设置线程调用的功能
pMyThread->start();//启动线程