[英]How to wait for QProgressDialog construction?
在執行長時間操作之前,我正在調用QProgressDialog
來通知用戶執行的進度。 長操作正在等待線程終止。
問題是,當我使用QProgressDialog
show
方法時,進度對話框沒有完全構建,線程進入線程的wait
方法,如下圖所示:
同時,當我使用QProgressDialog
exec
方法時,進度對話框已完全構建,但在退出進度對話框之前不會調用wait
方法,如下所示:
這是我正在使用的代碼:
auto dialog = new QProgressDialog();
dialog->setWindowTitle("Wait");
dialog->setLabelText("Aborting optimization");
dialog->resize(100, 30);
dialog->show();
optimizerUi->terminate();
optimizerUi->wait();
dialog->hide();
有什么辦法可以在線程陷入wait
方法之前等待或強制完全構建進度對話框,這需要很長時間並阻塞主線程? 謝謝你的任何建議。
您可以等待線程完成一些超時。 如果線程已完成,請關閉進度對話框。 如果不是,則處理應用程序事件。
auto dialog = new QProgressDialog();
dialog->setWindowTitle("Wait");
dialog->setRange(0, 0);
dialog->setLabelText("Aborting optimization");
dialog->setCancelButton(nullptr);
dialog->resize(100, 30);
dialog->show();
optimizerUi->terminate();
while (!optimizerUi->wait(QDeadlineTimer{100}))
{
QApplication::processEvents();
}
dialog->hide();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.