为什么窗户不弹出

Why does the window not pop up?

本文关键字:窗户 为什么      更新时间:2023-10-16

我有以下源代码:

    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,则在Process方法在QApplication::exec()中返回之前,不会发生任何事情

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

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