#include "progress.h" #include #include #include #include Progress::Progress(QString text, QWidget *parent) : QWidget(parent) , _label(new QLabel(text, this)) , _progress(new QProgressBar(this)) , _hidden(false) { auto *l = new QHBoxLayout(this); l->setMargin(0); setLayout(l); _progress->setRange(0, 100); } Progress::~Progress() { } void Progress::resizeEvent(QResizeEvent *event) { QWidget::resizeEvent(event); auto size = event->size(); int width = size.width() - 150; if (width < 250) { width = size.width(); _progress->hide(); } else if (_progress->value() != -1) { _progress->show(); } _label->setMinimumWidth(width); } void Progress::setProgress(int percent) { if (percent == -1) { if (!_hidden || _progress->isVisible()) { _hidden = true; _progress->hide(); } } else { _progress->setValue(percent); if (_hidden) { _hidden = false; if (_label->width() > 250) { _progress->show(); } } } } void Progress::setCaption(const QString &caption) { _label->setText(caption); }