Qthread exec,事件循环和上下文连接

问题描述

我试图用事件循环连接另一个线程上的QThread :: finish,以请求quit()

考虑以下代码

#include <QApplication>
#include <QDebug>
#include <QThread>

class DummyThread : public QThread
{
public:
    DummyThread::DummyThread(QObject *parent = nullptr) : QThread(parent){}
protected:
    virtual void run() override{
        QThread::sleep(1);
        qDebug()<<"Work done!";
    }
};

int main(int argc,char *argv[])
{
    QApplication a(argc,argv);

    QThread masterThread;
    DummyThread childThread;

    // This connection is Queued but doesn't work,you can force direct connection but this is not what I want...
    QObject::connect(&childThread,&QThread::finished,&masterThread,&QThread::quit /*,Qt::ConnectionType::DirectConnection*/);

    childThread.start();
    masterThread.start(); //do a exec()
    masterThread.wait();

    return 0; //No need for an event loop here
}

这是一个虚拟的例子,只是为了了解这里的问题,应该将连接排队,并在masterThread事件循环中执行quit()。 但这里什么也没发生:-(

在这里做什么错了?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)