have text in progress bar elided if needed
This commit is contained in:
parent
206686d443
commit
03823ff2e3
|
@ -5,25 +5,7 @@
|
||||||
#include "definitions/definitions.h"
|
#include "definitions/definitions.h"
|
||||||
#include "miscellaneous/application.h"
|
#include "miscellaneous/application.h"
|
||||||
|
|
||||||
ProgressBarWithText::ProgressBarWithText(QWidget* parent) : QProgressBar(parent) {
|
ProgressBarWithText::ProgressBarWithText(QWidget* parent) : QProgressBar(parent) {}
|
||||||
//setSizePolicy(QSizePolicy::Policy::Maximum, QSizePolicy::Policy::Preferred);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
QSize ProgressBarWithText::minimumSizeHint() const {
|
|
||||||
QString txt = text();
|
|
||||||
|
|
||||||
return QSize(fontMetrics().boundingRect(txt).width() + 32,
|
|
||||||
QProgressBar::minimumSizeHint().height());
|
|
||||||
}
|
|
||||||
|
|
||||||
QSize ProgressBarWithText::sizeHint() const {
|
|
||||||
QString txt = text();
|
|
||||||
|
|
||||||
return QSize(fontMetrics().boundingRect(txt).width() + 32,
|
|
||||||
QProgressBar::sizeHint().height());
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
QString ProgressBarWithText::text() const {
|
QString ProgressBarWithText::text() const {
|
||||||
qint64 total_steps = qint64(maximum()) - minimum();
|
qint64 total_steps = qint64(maximum()) - minimum();
|
||||||
|
@ -45,5 +27,14 @@ QString ProgressBarWithText::text() const {
|
||||||
const auto progress = static_cast<int>((qint64(value()) - minimum()) * 100.0 / total_steps);
|
const auto progress = static_cast<int>((qint64(value()) - minimum()) * 100.0 / total_steps);
|
||||||
|
|
||||||
result.replace(QLatin1String("%p"), locale.toString(progress));
|
result.replace(QLatin1String("%p"), locale.toString(progress));
|
||||||
return result;
|
|
||||||
|
// Now, shorten the text to fit the widget.
|
||||||
|
bool elide = false;
|
||||||
|
|
||||||
|
while (fontMetrics().boundingRect(result + QSL("...")).width() > width() - 30) {
|
||||||
|
result.chop(1);
|
||||||
|
elide = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return elide ? result + QSL("...") : result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,11 +9,6 @@ class ProgressBarWithText : public QProgressBar {
|
||||||
public:
|
public:
|
||||||
explicit ProgressBarWithText(QWidget* parent = nullptr);
|
explicit ProgressBarWithText(QWidget* parent = nullptr);
|
||||||
|
|
||||||
// NOTE: Can be uncommented (along with constructor code)
|
|
||||||
// to enable automatic fit-to-contents progress bars.
|
|
||||||
//virtual QSize minimumSizeHint() const;
|
|
||||||
//virtual QSize sizeHint() const;
|
|
||||||
|
|
||||||
virtual QString text() const;
|
virtual QString text() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue