簡體   English   中英

如何等待 QProgressDialog 構造?

[英]How to wait for QProgressDialog construction?

在執行長時間操作之前,我正在調用QProgressDialog來通知用戶執行的進度。 長操作正在等待線程終止。

問題是,當我使用QProgressDialog show方法時,進度對話框沒有完全構建,線程進入線程的wait方法,如下圖所示:

1

同時,當我使用QProgressDialog exec方法時,進度對話框已完全構建,但在退出進度對話框之前不會調用wait方法,如下所示:

2

這是我正在使用的代碼:

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.

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