为什么需要多线程

在开发存在界面交互的程序中,为了使一些耗时操作不造成卡顿;我们一般会将这些耗时操作放到子线程中进行处理,常见的如一些同步通讯。

虽然已编写过几次多线程的程序,但是每次使用都感觉心里不踏实,借用 QThread 总结一下罢。

QThread使用方法

Qt 中使用多线程,必然绕不开的是 QThread 。建议先过一遍 QThread Class 文档。

文档中演示了两种使用方法:

new QThread Class & Override run()

/*------------------------------WorkerThread-----------------------------------*/
class WorkerThread : public QThread
    Q_OBJECT
public:
    explicit WorkerThread();
protected:
    void run();
signals:
    void resultReady(const QString &s);
void WorkerThread::run(){
    /* ... here is the expensive or blocking operation ... */
/*------------------------------MainWindow-----------------------------------*/
void MainWindow::startWorkInAThread()
    WorkerThread *workerThread = new WorkerThread();
    // Release object in workerThread
    connect(workerThread, &WorkerThread::finished, workerThread, &QObject::deleteLater);
    workerThread->start();

需要 注意 的: