我有以下源代码:
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流程包含在以下三种方法中。如果我使用//
禁用这些方法,弹出窗口就会显示正常,但是如果我启用这些方法,则进程运行正常,但弹出窗口不会出现。任何想法/解决方案?问候
答案 0 :(得分:2)
由于主要功能
中实现了主应用程序循环,因此在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方法之前没有任何事情发生
您可以在单独的线程中启动进程,并通过在排队模式下实现信号\插槽将进度通知发送给您对话框
答案 1 :(得分:1)
在代码执行退出ProcessMethod()
之前,无法显示该对话框。如果您同步使用QProcess
es(通过调用任何waitForXXX
方法),那么这将导致您看到的问题。阻碍主线程的任何其他东西也会导致这个问题。