小编Man*_*dar的帖子

停止Qt线程:调用exit()或quit()不会停止线程执行

在main()即主线程中创建了一个QThread.将一个worker类移动到新线程.该线程执行worker类的'StartThread'方法.

工人线程:

//header file
class Worker : public QObject
{
    Q_OBJECT
public:
    Worker(QThread* thread);

public slots:
    void StartThread(); 
    void EndThread();

private:
    QThread* m_pCurrentThread;
};


// source file
#include "QDebug"
#include "QThread"
#include "worker.h"

Worker::Worker(QThread* thread)
{
m_pCurrentThread = thread;
}

void Worker::StartThread()
{
    qDebug() << " StartThread";

    while(true)
    {
        QThread::msleep(1000);
        qDebug() << " thread running";
        static int count = 0;
        count++;
        if(count == 10)
        {            
            break;
        }
        if(m_pCurrentThread->isInterruptionRequested())
        {
            qDebug() << " is interrupt requested";
            // Option 3:  
            m_pCurrentThread->exit();               
        } …
Run Code Online (Sandbox Code Playgroud)

c++ qt qthread

3
推荐指数
2
解决办法
4824
查看次数

标签 统计

c++ ×1

qt ×1

qthread ×1