如何等待QProgressDialog构建?
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();
在执行长操作之前,我正在调用 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();