Обычно вы просто создаете экземпляр QProgressDialog
:
QProgressDialog progress("Parsing...", "Abort", 0, numOperations, this);
progress.setWindowModality(Qt::WindowModal);
, где numOperations
- это полное количество действий, которые необходимо выполнить перед выполнением анализа. Для этого вам, вероятно, нужно сделать первый быстрый просмотр данных, в котором вы просто подсчитываете общее количество анализируемых элементов или что-то подобное, и устанавливаете это значение как максимальное значение numOperations
в предыдущем примере кода. Затем вы делаете фактический проход обработки и периодически вызываете setValue:
progress.setValue(finishedOperations);
где finishOperations - количество проанализированных на данный момент вещей.
Предполагается, что вам нужно простейшее решение, в котором индикатор выполнения отображается в виде отдельного модального диалога. Если вы хотите дать пользователю возможность прервать процесс, вам нужно реализовать слот, который вы подключаете к сигналу canceled()
.
Если вы не хотите, чтобы индикатор выполнения в модальном диалоговом окне просто показывал где-то QProgressBar
. Он работает аналогичным образом, периодически вызывая setValue ().