diff options
| author | Felix (xq) Queißner <git@mq32.de> | 2020-06-22 21:10:04 +0200 |
|---|---|---|
| committer | Felix (xq) Queißner <git@mq32.de> | 2020-06-22 21:10:04 +0200 |
| commit | 75ec461eeaa851cb5c53f4cfffc434e3e529ed1d (patch) | |
| tree | 3944737340718ca3675381aa06636045d397e780 /src/widgets/elidelabel.cpp | |
| parent | 8dbfb0890560fd1cd698d06fa05ac868c4db8576 (diff) | |
| download | kristall-75ec461eeaa851cb5c53f4cfffc434e3e529ed1d.tar.gz | |
Restructures the project source and cleans up a bit
Diffstat (limited to 'src/widgets/elidelabel.cpp')
| -rw-r--r-- | src/widgets/elidelabel.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/widgets/elidelabel.cpp b/src/widgets/elidelabel.cpp new file mode 100644 index 0000000..dc0a6b2 --- /dev/null +++ b/src/widgets/elidelabel.cpp @@ -0,0 +1,59 @@ +#include "elidelabel.hpp" + +#include <QPainter> + +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(); +#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0) + QSize size(fm.horizontalAdvance("..."), fm.height()); +#else + QSize size(fm.width("..."), fm.height()); +#endif + return size; + } + + return QLabel::minimumSizeHint(); +} |
