为什么窗口没有弹出?

时间:2012-03-21 15:24:10

标签: c++ qt popup qprocess

我有以下源代码:

    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流程包含在以下三种方法中。如果我使用//禁用这些方法,弹出窗口就会显示正常,但是如果我启用这些方法,则进程运行正常,但弹出窗口不会出现。任何想法/解决方案?问候

2 个答案:

答案 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方法),那么这将导致您看到的问题。阻碍主线程的任何其他东西也会导致这个问题。