C++ 运行while循环的进程时缺少对话框内容

C++ 运行while循环的进程时缺少对话框内容,c++,qt,qprocess,qdialog,C++,Qt,Qprocess,Qdialog,我有以下源代码: void Processmethod() { QDialog *ProcessMessage = new QDialog; Ui::DialogProcessMessage Dialog; Dialog.setupUi(ProcessMessage); ProcessMessage->setModal(true); ProcessMessage->setAttri

我有以下源代码:

void Processmethod()
{

    QDialog *ProcessMessage = new QDialog;      
    Ui::DialogProcessMessage Dialog;            
    Dialog.setupUi(ProcessMessage);             
    ProcessMessage->setModal(true);
    ProcessMessage->setAttribute(Qt::WA_DeleteOnClose); 
    ProcessMessage->show();

    processmethodONE();  
    processmethodTWO();
    processmethodTHREE();                  
}

void processmethodONE()
{
    QString ProcessCommand = "w8 " + blablubli";            

    Prozess.setWorkingDirectory(Path);         //QProcess "Prozess" is globaly defined  
    Prozess.setStandardOutputFile(Path);       //in my class
    Prozess.start(ProcessCommand);


while(!Prozess.waitForFinished(2000))
   {
       qApp->processEvents();
       std::cerr << "Process running " << std::endl;
   }

QProcess::ExitStatus Status = Prozess.exitStatus(); 

if (Status == 0)
 {
   std::cout << "File created!" << std::endl;
 }
}
void Processmethod()
{
QDialog*ProcessMessage=新的QDialog;
DialogProcessMessage对话框;
setupUi(ProcessMessage);
ProcessMessage->setModal(真);
ProcessMessage->setAttribute(Qt::WA_DeleteOnClose);
ProcessMessage->show();
processmethodONE();
processmethodTWO();
processmethodTHREE();
}
void processmethodONE()
{
QString ProcessCommand=“w8”+blablubli”;
setWorkingDirectory(Path);//进程“Prozess”是全局定义的
Prozess.setStandardOutputFile(Path);//在我的类中
Prozess.start(ProcessCommand);
而(!Prozess.waitForFinished(2000))
{
qApp->processEvents();
std::cerr尝试使用QDialogexec()方法,而不是show()这将达到模式窗口的目的

这也可以解决你的问题。 QPushButtons和Qlabel(按钮和文本)缺失这可能是布局或对话框窗口大小的问题(请在将其变大后重试)


签入预览窗口(选项菜单->表单编辑器->预览)

我现在使用的
qApp->processEvents()
在进程while循环中。对话框内容不会立即出现,但至少在大约五到十秒钟后出现,这对我来说至少是正常的。问候您,谢谢支持。

while循环冻结了UI线程-因此您无法拥有任何响应UI,无论是主对话框还是进度对话框。删除while循环并创建对话框模式,用于禁用用户输入的主UI。请参见“您好”,我编辑了我的问题。也许您可以回答新问题。我现在只想显示对话框内容,因此只有同时显示对话框内容时,一切都会正常。exec()阻止进程,直到对话框关闭,这不是我的意图。此外,QTDesigner中的预览工作正常:)。