QEventLoop уже вызывал exec () даже с exit () раньше

У меня есть кнопка, подключенная по нажатию кнопки 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
}
}

0

Решение

ты можешь позвонить QEventLoop::processEvents Обрабатывает любые ожидающие события.
ваш код будет выглядеть так:

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

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]