问题描述
我试图用事件循环连接另一个线程上的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 (将#修改为@)