我点击了一个按钮与myfuntion连接,见下文。
我正在使用QEventLoop,因为我正在等待一个事件,它会调用_myEventLoop.exit(0);
当我连续两次单击该按钮而不等待事件发生时,我收到错误消息:
QEventLoop::exec: instance 0x22f47378 has already called exec()
我在调用exec()之前调用exit(1),但似乎这个exit立即返回,然后函数passe by exec(),因为它仍然运行返回1,myfunction返回并且只有第一个exec()以1返回。
如何在继续之前确定先前对exec()的调用已经返回?
void myfuntion()
{
_myEventLoop.exit(1);
if(_myEventLoop.exec() == 0)
{
// DoSomething
}
}
答案 0 :(得分:1)
您可以致电QEventLoop::processEvents
处理任何待处理事件
你的代码就像:
void myfuntion()
{
_myEventLoop.exit(1);
_myEventLoop.processEvents();
if(_myEventLoop.exec() == 0)
{
// DoSomething
}
}