Подтвердить что ты не робот

Как показать "бесконечный плавающий" уровень прогресса в Qt, не зная процент?

Я попытался показать индикатор прогресса во время некоторой операции. Однако я не знаю, сколько раз потребуется, чтобы процент не был рассчитан. Кажется, что Windows имеет стиль progressbar: infinite floating progressbar Я попытался реализовать этот стиль, установив максимальный и минимальный значения в 0:

ui->progressBar->setMaximum(0);

ui->progressBar->setMinimum(0);

Кажется, я сделал это, за исключением того, что он действительно не остановится, пока программа не выйдет, несмотря на то, что я вызвал функцию reset(), пытаясь ее остановить.

Итак, мой вопрос заключается в том, как правильно реализовать этот уровень прогресса?

4b9b3361

Ответ 1

Когда операция завершится, попробуйте установить произвольное максимальное значение и установите значение прогресса на тот же номер:

ui->progressBar->setMaximum(100);
ui->progressBar->setValue(100);

Таким образом, индикатор выполнения должен заполнить, чтобы указать завершение (что является удобной визуальной подсказкой, поскольку ваша операция действительно завершена).

Ответ 2

Вам нужно установить минимальные, максимальные и текущие значения:

ui->progressBar->setMaximum(0);
ui->progressBar->setMinimum(0);
ui->progressBar->setValue(0);

Описание описания QProgressBar'a сообщает:

Если минимальный и максимальный оба значения равны 0, на панели отображается индикатор занятости, а не процент шагов.

Это должна быть какая-то ошибка, с которой вы столкнулись. Не был бы первым в Qt.

Ответ 3

У меня есть решение BЈовић, так как он указал на цитирование из официальной документации, но, к сожалению, этот механизм не работал у меня (не могу понять, в чем причина). Так я решил это (согласно документации, QProgressBar::setRange - QProgressBar может быть настроен на неопределенное состояние, используя setRange(0, 0)):

ui->progressBar->setRange(0, 0);