Qt5线程编程2

现在用低级的方式编写一个线程类,新建一个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();

运行结果:

多谢,亲爱的美美。

猜你喜欢

转载自blog.csdn.net/islinyoubiao/article/details/113772503
Qt5