У меня есть кнопка, подключенная по нажатию кнопки myfuntion, см. Ниже.
Я использую QEventLoop, потому что я жду события, которое вызовет _myEventLoop.exit (0);
Когда я нажимаю кнопку два раза подряд, не дожидаясь события, я получаю сообщение об ошибке:
QEventLoop::exec: instance 0x22f47378 has already called exec()
Я делаю вызов exit (1) перед вызовом exec (), но кажется, что этот выход возвращается немедленно, затем функция проходит через exec (), поскольку он все еще выполняет return 1, myfunction возвращает и только затем первый exec () вернуться с 1.
Как я могу быть уверен, что предыдущий вызов exec () вернулся, прежде чем продолжить?
void myfuntion()
{
_myEventLoop.exit(1);
if(_myEventLoop.exec() == 0)
{
// DoSomething
}
}
ты можешь позвонить QEventLoop::processEvents
Обрабатывает любые ожидающие события.
ваш код будет выглядеть так:
void myfuntion()
{
_myEventLoop.exit(1);
_myEventLoop.processEvents();
if(_myEventLoop.exec() == 0)
{
// DoSomething
}
}
Других решений пока нет …