В основном вы просто создать экземпляр QProgressDialog
:
QProgressDialog progress("Parsing...", "Abort", 0, numOperations, this);
progress.setWindowModality(Qt::WindowModal);
numOperations
, где есть полное число вещей, которые нужно сделать до того, как синтаксический анализ делается. Для этого вам, вероятно, необходимо сделать первый быстрый проход через данные, где вы просто подсчитаете общее количество элементов для синтаксического анализа или что-то подобное, и установите это значение как максимальное значение numOperations
в предыдущем примере кода. Затем вы делаете фактическую обработку проход и вызвать SetValue периодически:
progress.setValue(finishedOperations);
где finishedOperations является количество вещей разобранных до сих пор.
Предполагается, что вам нужно простейшее решение, в котором индикатор выполнения отображается как отдельный модальный диалог. Если вы хотите дать пользователю возможность прервать процесс, вам необходимо реализовать слот, который вы подключаете к canceled()
signal.
Если вам не нужен индикатор выполнения в модальном диалоговом окне, вы просто покажите QProgressBar
. Он работает аналогичным образом, периодически вызывая setValue().
См. Также этот вопрос: http://stackoverflow.com/q/3626946/362638 – 2010-09-07 14:48:18