QEventLoop之前已经使用exit()调用了exec()

时间:2015-09-28 16:54:40

标签: c++ qt qt5.5 qeventloop

我点击了一个按钮与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
    }
}

1 个答案:

答案 0 :(得分:1)

您可以致电QEventLoop::processEvents处理任何待处理事件 你的代码就像:

void myfuntion()
{
    _myEventLoop.exit(1);
    _myEventLoop.processEvents();

    if(_myEventLoop.exec() == 0)
    {
        // DoSomething
    }
}