[英]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.