aboutsummaryrefslogtreecommitdiff
path: root/src/widgets/elidelabel.cpp
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-06-22 21:10:04 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-06-22 21:10:04 +0200
commit75ec461eeaa851cb5c53f4cfffc434e3e529ed1d (patch)
tree3944737340718ca3675381aa06636045d397e780 /src/widgets/elidelabel.cpp
parent8dbfb0890560fd1cd698d06fa05ac868c4db8576 (diff)
downloadkristall-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.cpp59
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();
+}