diff options
author | 2023-01-27 02:57:48 +0530 | |
---|---|---|
committer | 2023-01-27 10:10:17 +0530 | |
commit | 011db4495d98932cbffa5fc2268ee1a3e2984aa6 (patch) | |
tree | a071bf7c135d254bb7976e022839c49475d7552c /src/widgets/elidedlabel/elidedlabel.h | |
parent | 56c55a949854f9dd73b60e353be35bd31407cee0 (diff) | |
download | whatsie-011db4495d98932cbffa5fc2268ee1a3e2984aa6.tar.gz whatsie-011db4495d98932cbffa5fc2268ee1a3e2984aa6.zip |
chore: cleanup
- move methods to page
Diffstat (limited to 'src/widgets/elidedlabel/elidedlabel.h')
-rw-r--r-- | src/widgets/elidedlabel/elidedlabel.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/widgets/elidedlabel/elidedlabel.h b/src/widgets/elidedlabel/elidedlabel.h new file mode 100644 index 0000000..7dc610a --- /dev/null +++ b/src/widgets/elidedlabel/elidedlabel.h @@ -0,0 +1,49 @@ +#pragma once +#include <QLabel> +#include <QPainter> +#include <QResizeEvent> +#include <QString> +#include <QFont> + +// A label that elides its text when not enough geometry is available to show all of the text. +// Currently only capable of one-line. +class ElidedLabel : public QLabel { + Q_OBJECT + +private: + Qt::TextElideMode m_elide_mode; + QString m_cached_elided_text; + + +public: + ElidedLabel(QWidget* parent = NULL); + ElidedLabel(const QString& txt, QWidget* parent = NULL); + ElidedLabel(const QString& txt, Qt::TextElideMode elideMode = Qt::ElideRight, QWidget* parent = NULL); + +public: + // Set the elide mode used for displaying text. + inline void setElideMode(Qt::TextElideMode elideMode) { + m_elide_mode = elideMode; + updateGeometry(); + } + + // Get the elide mode currently used to display text. + inline Qt::TextElideMode elideMode() const { + return m_elide_mode; + } + + + +public: // QLabel overrides + void setText(const QString&); // note: not virtual so no polymorphism ... + + +protected: // QLabel overrides + virtual void paintEvent(QPaintEvent*) override; + virtual void resizeEvent(QResizeEvent*) override; + +protected: + // Cache the elided text so as to not recompute it every paint event + void cacheElidedText(int w); + +}; |