0

次のソースコードがあります。

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

したがって、何らかの理由でダイアログのコンテンツが欠落している可能性があります。ダイアログには、いくつかのテキストと 1 つのボタンがあります。ダイアログのポップアップ時とプロセスの実行中にそのコンテンツを表示したいだけです.これを達成するための解決策やアイデアはありますか? 挨拶

4

2 に答える 2

1

show() の代わりにQDialog のexec()メソッドを使用してみてください。これは、モーダル ウィンドウの目的に役立ちます。

これで問題も解決する場合があります。QPushButtons と QLabels (ボタンとテキスト) がありません。これは、レイアウトまたはダイアログ ウィンドウのサイズの問題である可能性があります (大きくしてから試してください)。

プレビュー ウィンドウで確認します(OPTIONS MENU -> FORM EDITOR -> PREVIEW)

于 2012-03-26T17:49:27.810 に答える
0

私は現在qApp->processEvents();、while ループのプロセスで使用しています。ダイアログの内容はすぐには表示されませんが、少なくとも 5 ~ 10 秒後には表示されます。少なくとも私には問題ありません。サポートの挨拶とthx。

于 2012-03-28T13:45:44.047 に答える