我有以下源代码:
Processmethod()
{
QDialog *ProcessMessage = new QDialog;
Ui::DialogProcessMessage Dialog;
Dialog.setupUi(ProcessMessage);
ProcessMessage->setModal(true);
ProcessMessage->setAttribute(Qt::WA_DeleteOnClose);
ProcessMessage->show();
PROCESSES START
}
在我想显示 QDialog“ProcessMessage”之后,有三个 QProcess 进程包含在以下三种不同的方法中。如果我使用 //
禁用这些方法,弹出窗口显示得很好,但如果我启用这些方法,进程运行正常,但弹出窗口不会出现。任何想法/解决方案?问候
最佳答案
在 Process 方法未返回之前,您的窗口不会显示,因为在主函数中实现了主应用程序循环
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QDialog w; // or other window
w.show();
return a.exec(); // main app loop (all drawing procedures called from here
}
因此,如果您调用 PROCESSES START,则在 QApplication::exec() 中返回 Process 方法之前什么都没有发生
你可以在单独的线程中启动你的进程,并通过在队列模式下实现信号槽向你的对话框发送进度通知
关于c++ - 为什么不弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9807610/