现在用低级的方式编写一个线程类,新建一个MyWorker类,继承QObject
MyWorker.h
#ifndef MYWORKER_H
#define MYWORKER_H
#include <QObject>
#include <QDebug>
class MyWorker : public QObject
{
Q_OBJECT
public:
explicit MyWorker(QObject *parent = nullptr);
signals:
void showResults(int res);
void doneProcess();
public slots:
void process();
};
#endif // MYWORKER_H
MyWorker.cpp
#include "myworker.h"
MyWorker::MyWorker(QObject *parent) : QObject(parent)
{
}
void MyWorker::process()
{
int result = 0;
for(int i=0; i<200000000; ++i)
{
result += 1;
}
emit showResults(result);
emit doneProcess();
}
有mainWindow.cpp的构造函数上添加
QThread* workerThread = new QThread;
MyWorker *workerObject = new MyWorker;
workerObject->moveToThread(workerThread);
connect(workerThread, &QThread::started, workerObject, &MyWorker::process);
connect(workerObject, &MyWorker::doneProcess, workerThread, &QThread::quit);
connect(workerObject, &MyWorker::doneProcess, workerObject, &MyWorker::deleteLater);
connect(workerObject, &MyWorker::showResults, this, &MainWindow::handleResult);
connect(workerThread, &QThread::finished, workerObject, &MyWorker::deleteLater);
workerThread->start();
运行结果:
多谢,亲爱的美美。