0

我有以下源代码:

    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 进程。如果我在弹出窗口中禁用这些方法//就可以了,但是如果我启用这些方法,则进程运行良好,但不会出现弹出窗口。任何想法/解决方案?问候

4

2 回答 2

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,则在 Process 方法在 QApplication::exec() 中返回之前什么都没有发生

您可以在单独的线程中启动您的进程,并通过在队列模式下实现信号\槽向您的对话框发送进度通知

于 2012-03-21T15:55:10.540 回答
1

在您的代码执行退出之前,无法显示该对话框ProcessMethod()。如果您正在QProcess同步使用 es(通过调用任何waitForXXX方法),那么这将导致您看到的问题。任何其他阻碍主线程的东西也会导致这个问题。

于 2012-03-21T15:45:13.877 回答