我有以下源代码:

    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
}


因此,如果您调用过程启动,则直到Process方法在QApplication :: exec()中返回之前,什么都没有发生

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

08-06 14:26