我有一个按钮连接点击与我的功能,见下文。
我使用QEventLoop是因为我在等待一个事件,它将调用_myEventLoop.exit(0);
当我在没有等待事件发生的情况下连续单击按钮两次时,我得到了错误消息:
QEventLoop::exec: instance 0x22f47378 has already called exec()我在调用exec()之前调用了exit( 1 ),但是这个exit似乎立即返回,然后exec()传递函数,因为它仍在运行return 1,所以myfunction返回,只有第一个exec()返回1。
在继续之前,我如何确保前面对exec()的调用已经返回?
void myfuntion()
{
_myEventLoop.exit(1);
if(_myEventLoop.exec() == 0)
{
// DoSomething
}
}发布于 2015-09-29 04:33:38
您可以调用QEventLoop::processEvents来处理任何未决事件。
您的代码如下所示:
void myfuntion()
{
_myEventLoop.exit(1);
_myEventLoop.processEvents();
if(_myEventLoop.exec() == 0)
{
// DoSomething
}
}https://stackoverflow.com/questions/32828106
复制相似问题