/
MaximU
/
application
Обзор
Документация
Войти
/
MaximU
/
application
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
taskprogresswidget.cpp
83 строки
2 KB
user
Рефак отображения прогресса.
13 янв 2026, 16:53
13 янв 2026, 16:53
7fd72e5
Код
Авторство
О чём код?
#include "taskprogresswidget.h" #include "ui_taskprogresswidget.h" /*! * \brief Конструктор. * \param parent Родительский виджет. * \param taskName Название задачи. */ TaskProgressWidget::TaskProgressWidget(QWidget *parent, const QString &taskName) : QWidget(parent), ui(new Ui::TaskProgressWidget) { ui->setupUi(this); ui->labelTaskName->setText(taskName); connect(&mTimer, &QTimer::timeout, this, &TaskProgressWidget::slot_mTimerUpdate_timeout); } /*! * \brief Деструктор. */ TaskProgressWidget::~TaskProgressWidget() { delete ui; } /*! * \brief Начинает прогресс задачи. * \param total Финальное значение прогресса. */ void TaskProgressWidget::progressBegin(int total) { mCount = 0; mTotal = total; mTime0 = QDateTime::currentDateTime(); ui->progressBar->setRange(0, mTotal); slot_mTimerUpdate_timeout(); show(); mTimer.start(200); } /*! * \brief Изменяет прогресс задачи. * \param count Текущее значение прогресса. * \param total Финальное значение прогресса. */ void TaskProgressWidget::progressStep(int count, int total) { if (mTotal == 0) { progressBegin(total); // При воспроизведении файлов может возникнуть ситуация, при которой данные идут не с начала цикла!!! } mCount = count; mTotal = total; } /*! * \brief Завершает прогресс задачи. */ void TaskProgressWidget::progressEnd() { mTimer.stop(); hide(); mCount = 0; mTotal = 0; } /*! * \brief Выполняется при таймауте таймера обновления прогресса задачи. */ void TaskProgressWidget::slot_mTimerUpdate_timeout() { ui->progressBar->setRange(0, mTotal); ui->progressBar->setValue(mCount); ui->labelTaskProgressValue->setText(QString::number(ui->progressBar->value()) + tr(" из ") + QString::number(ui->progressBar->maximum()) + ", " + QString::number(mTime0.msecsTo(QDateTime::currentDateTime()) / 1000.0, 'f', 1) + tr(" с")); }