当带有while循环的进程正在运行时,缺少对话框内容

Dialogs content is missing when process with while loop is running

本文关键字:运行时 对话框 while 循环 进程      更新时间:2023-10-16

我有以下源代码:

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;
 }
}

所以,我的问题是对话框的内容由于某种原因而丢失了。在对话框中,我有一些文本和一个按钮。我只想在对话框弹出和进程运行时看到这些内容。有什么解决方案或想法可以实现吗?问候

试着使用QDialogexec()方法,而不是show,这将达到模式窗口的目的。

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

检查预览窗口(选项菜单->表单编辑器->预览)。

我现在在while循环的过程中使用了qApp->processEvents();。对话内容不会立即出现,但至少在大约5-10秒后,这对我来说是可以的。