Вам не нужно использовать QEventLoop
.
Если диалоговое окно является модальным, , тогда все остальные не получат ввод .В этом случае вы должны отправить сигнал, когда диалог закрыт.Вы можете использовать QDialog::Finished(int)
например.Приемник сигнала - это не объект, который открыл диалоговое окно.
//slot
void showDialog(){
if(msg.size() <= 0)
return;
//create dialog here
connect(createdDialog, SIGNAL(finished(int)), this, SLOT(showDialog()));
}
И вы можете вызвать этот метод самостоятельно для первого сообщения.
Если диалоговое окно не является модальным, тогда вынеобходимо использовать singleshot QTimer
, чтобы задержать следующий диалог.По сути, каждый раз, когда вы отображаете диалог, вы вычисляете самое раннее время, когда вы хотите, чтобы другой диалог отображался, и вы устанавливаете таймер с этим временем.Когда он запускается, вы проверяете сообщение и открываете диалоговое окно и т. Д. ...
Однако мне интересно, являются ли диалоги лучшим способом показать непрерывный ввод информации.