簡體   English   中英

如何在Qt中運行進度條以指示其他進程正忙

[英]How run a progress bar to indicate the other process is busy in Qt

我正在開發一個項目,我需要向用戶顯示“忙碌進度條”或“GUI元素”,直到另一個進程完成。 有沒有辦法我可以不使用線程來做到這一點。 顯示的片段如下:

     QProcess compile;
     QProgressDialog *dialog = new QProgressDialog();
     dialog->setMinimum(0);
     dialog->setMaximum(0);

     compile.start("make", QStringList()<< send.at(2) << "-j6" << "IN=" + QFileInfo(send.at(0)).absolutePath() + "/" +QFileInfo(send.at(0)).baseName() << "OUT=/home/venkatesh/MooNMD_Working/ParMooN_Out/cd2d/" + send.at(1) + ".exe" << "&");
     while(compile.waitForFinished(-1))
     {
          dialog->exec();
     }
     dialog->close();

但繁忙的進度條在make命令結束時不會自動關閉。 我有什么選擇?

你應該做這樣的事情:

QProcess compile;
QProgressDialog *dialog = new QProgressDialog;
dialog->setAttribute(Qt::WA_DeleteOnClose);
dialog->setRange(0,0);
connect(&compile, SIGNAL(finished(int)), dialog, SLOT(close()));

compiler.start("myprog.exe");
dialog->exec();

dialog->exec(); 在循環中毫無意義。 當你調用dialog->exec();時它也會阻塞dialog->exec(); 意味着你的循環不會完成。

只有傳遞給setValue的值達到setMaximum設置的值時, QProgressDialog才會關閉。

您已將最小值和最大值都設置為0因此對話框將無法正常運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM