From c71a08e2b44521590a3f48e6cd6b15394890b48f Mon Sep 17 00:00:00 2001 From: "Felix (xq) Queißner" Date: Fri, 12 Jun 2020 03:25:00 +0200 Subject: Fixes two overflow bugs in labels. No weird scaling based on links anymore. --- src/elidelabel.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/elidelabel.cpp (limited to 'src/elidelabel.cpp') diff --git a/src/elidelabel.cpp b/src/elidelabel.cpp new file mode 100644 index 0000000..8830f69 --- /dev/null +++ b/src/elidelabel.cpp @@ -0,0 +1,55 @@ +#include "elidelabel.hpp" + +#include + +ElideLabel::ElideLabel(QWidget* parent) + : QLabel(parent) +{ + m_elideMode = Qt::ElideNone; +} + +ElideLabel::ElideLabel(const QString &text, QWidget* parent) : QLabel(text, parent) +{ + m_elideMode = Qt::ElideNone; +} + +ElideLabel::~ElideLabel() +{ +} + +void ElideLabel::setElideMode(Qt::TextElideMode mode) +{ + m_elideMode = mode; +} + +Qt::TextElideMode ElideLabel::elideMode() const +{ + return m_elideMode; +} + +void ElideLabel::paintEvent(QPaintEvent * event) +{ + if (m_elideMode == Qt::ElideNone) + { + QLabel::paintEvent(event); + } + else + { + QFrame::paintEvent(event); + QPainter painter(this); + QRect r = contentsRect(); + painter.drawText(r, alignment(), fontMetrics().elidedText(text(), m_elideMode, r.width())); + } +} + +QSize ElideLabel::minimumSizeHint() const +{ + if (m_elideMode != Qt::ElideNone) + { + const QFontMetrics& fm = fontMetrics(); + QSize size(fm.width("..."), fm.height()); + return size; + } + + return QLabel::minimumSizeHint(); +} -- cgit v1.2.3