Как показать "бесконечный плавающий" уровень прогресса в Qt, не зная процент?
Я попытался показать индикатор прогресса во время некоторой операции. Однако я не знаю, сколько раз потребуется, чтобы процент не был рассчитан. Кажется, что Windows имеет стиль progressbar:
Я попытался реализовать этот стиль, установив максимальный и минимальный значения в 0:
ui->progressBar->setMaximum(0);
ui->progressBar->setMinimum(0);
Кажется, я сделал это, за исключением того, что он действительно не остановится, пока программа не выйдет, несмотря на то, что я вызвал функцию reset(), пытаясь ее остановить.
Итак, мой вопрос заключается в том, как правильно реализовать этот уровень прогресса?
Ответы
Ответ 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);