当while循环运行时,对话框内容丢失

时间:2012-03-26 14:38:41

标签: c++ qt qprocess qdialog

我有以下源代码:

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

所以,我的问题是由于某种原因缺少对话框内容。在对话框中,我有一些文字和一个按钮。我只是想在对话框弹出和进程运行时看到该内容。任何解决方案或想法如何实现这一点?问候

2 个答案:

答案 0 :(得分:1)

尝试使用QDialog exec()方法而不是show(),这将用于模态窗口。

这也可以解决您的问题。 缺少QPushButtons和QLabels(按钮和文本),这可能是您的布局或对话框窗口大小的问题(在将其设置为大之后尝试)。

检入预览窗口(选项菜单 - &gt;格式编辑器 - &gt;预览)

答案 1 :(得分:0)

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