【Qt】一个使用QEventLoop时,遇到的教训

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010168781/article/details/86659967
1、问题描述

伪代码如下:

QEventLoop eventLoop;
QObject::connect(this, &Class::signal, [](){
	doSomething();
	eventLoop.exit(0);
});
emit signal();
eventLoop.exec();

在执行eventLoop.exec()时,造成永不退出。

2、原因分析

本打算在,槽函数中执行doSomething()后,再继续执行。但是在signal发出后,先执行了槽函数中的exit(0)函数,后面的eventLoop.exec()随后执行,但此时已经没有exit()来终止eventLoop了,造成后面的代码永远也不会执行。

切记:在exec()后再执行exit(),血的教训啊!

猜你喜欢

转载自blog.csdn.net/u010168781/article/details/86659967