Использовать QProgressDialog . Он предназначен для такого использования. Вы можете использовать QProgressDialog в качестве модального диалога, таким образом предотвращая любое взаимодействие пользователя с вашим главным окном. QProgressDialog также предоставляет вам простой способ представить ход вашей обработки и дополнительную кнопку для прерывания обработки.
Edit:
QProgressBar можно использовать в двух состояниях: пошаговое выполнение или просто отображение состояния занятости.
Индикатор выполнения QProgressDialog не может использоваться, показывая состояние занятости, потому что для этого потребуется установить минимальные и максимальные значения QProgressDialog равными 0, что немедленно закрывает диалоговое окно прогресса. Однако вы можете дать QProgressDialog новый индикатор выполнения, используя функцию setBar (). Затем вы можете установить min, max и value этого индикатора выполнения в 0, а затем получить занятой вид.
QProgressDialog progressDialog("Processing...", "Abort", 0, INT_MAX, this);
QProgressBar* bar = new QProgressBar(&progressDialog);
bar->setRange(0, 0);
bar->setValue(0);
progress.setBar(bar);
progressDialog.setMinimumWidth(350);
progressDialog.setMinimumDuration(1000);
progressDialog.setWindowModality(Qt::WindowModal);
progressDialog.setValue(0);
// Do your time consuming processing here, but remember to change
// the progress dialog's value a few times per second.
// That will keep the busy indicator moving.
progressDialog.setValue(progressDialog.value() + 1);
// And check if the user has cancelled the processing
if (progressDialog.wasCanceled())
break or return or whatever necessary
// When your processing is done, close the dialog.
progressDialog.close();