繁体   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