Qt 几个异步模式对话框

Qt 几个异步模式对话框,qt,asynchronous,modal-dialog,Qt,Asynchronous,Modal Dialog,在我的程序中,有这样一个循环: QNetworkReply *reply = manager->get(QNetworkRequest(QUrl(path))); 此函数被多次调用。在“回复完成”时,程序显示模式对话框(例如,常规QDialog)。问题是,我希望对话一个接一个地出现,而不是像现在这样一下子出现在一起 我试着用 QList<QEventLoop *> stack; QList堆栈; 每个“等待”对话框对应一个QEventLoop。但在我看来,这是一个糟糕的解

在我的程序中,有这样一个循环:

QNetworkReply *reply = manager->get(QNetworkRequest(QUrl(path)));
此函数被多次调用。在“回复完成”时,程序显示模式对话框(例如,常规QDialog)。问题是,我希望对话一个接一个地出现,而不是像现在这样一下子出现在一起

我试着用

QList<QEventLoop *> stack;
QList堆栈;

每个“等待”对话框对应一个QEventLoop。但在我看来,这是一个糟糕的解决方案。

您不需要使用
QEventLoop

如果对话框是模态的,则会阻止所有其他对话框获得输入。在这种情况下,您应该在对话框关闭时发送一个信号。例如,您可以使用
QDialog::Finished(int)
。信号接收器不是打开对话框的对象

//slot
void showDialog(){
 if(msg.size() <= 0)
  return;
 //create dialog here
 connect(createdDialog, SIGNAL(finished(int)), this, SLOT(showDialog()));
}
//插槽
void showDialog(){

if(msg.size())这些是错误对话框,所以我认为这是一个好方法。我认为,您的解决方案不适合我的情况。在我的replyFinished函数中,我有:…一些代码…int result=dialogExec();if(result)…一些代码…我需要显示一个对话框,所以在调用exec之前,其他对话框应该等待。当第一个对话框关闭时,下一个对话框应该从它停止的位置继续。在我的情况下,阻止所有其他人输入是不够的。你能编辑你的问题以更好地解释吗?我认为你的程序的问题是,它打开了一个对话框如果不检查是否已经显示了一个。我会使用类似于
QTextArea
QTableWidget
的东西,在其中添加错误消息。类似于log.modal,它只意味着它阻止其他窗口的输入。因此,您误用了这个词。是的,它会在不检查是否打开另一个对话框的情况下打开对话框。因此,我需要函数th在打开新对话框,等待第一个对话框关闭,然后继续。