18 void elideText(
int width);
19 bool isModeElideNone()
const;
22 Qt::TextElideMode m_elideMode = Qt::ElideNone;
23 bool m_isElided =
false;
26DockLabelPrivate::DockLabelPrivate()
30void DockLabelPrivate::elideText(
int width)
32 if (isModeElideNone()) {
36 QFontMetrics fm = q->fontMetrics();
37 QString str = fm.elidedText(m_text, m_elideMode, width - q->margin() * 2 - q->indent());
38 if (str == u
'\x2026') {
41 bool wasElided = m_isElided;
42 m_isElided = str != m_text;
43 if (m_isElided != wasElided) {
44 Q_EMIT q->elidedChanged(m_isElided);
46 q->QLabel::setText(str);
49bool DockLabelPrivate::isModeElideNone()
const
51 return Qt::ElideNone == m_elideMode;
60 : QLabel(
text, parent, f)
65 if (!
text.isEmpty()) {
79 return d->m_elideMode;
85 d->m_elideMode = mode;
86 d->elideText(size().width());
98#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0))
99 bool hasPixmap = !pixmap(Qt::ReturnByValue).isNull();
101 bool hasPixmap = (pixmap() !=
nullptr);
103 if (hasPixmap || d->isModeElideNone()) {
104 return QLabel::minimumSizeHint();
106 const QFontMetrics &fm = fontMetrics();
107#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0))
108 QSize size(fm.horizontalAdvance(d->m_text.left(2) + u
'\x2026'), fm.height());
110 QSize size(fm.width(d->m_text.left(2) + u
'\x2026'), fm.height());
118#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0))
119 bool hasPixmap = !pixmap(Qt::ReturnByValue).isNull();
121 bool hasPixmap = (pixmap() !=
nullptr);
123 if (hasPixmap || d->isModeElideNone()) {
124 return QLabel::sizeHint();
126 const QFontMetrics &fm = fontMetrics();
127#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0))
128 QSize size(fm.horizontalAdvance(d->m_text), QLabel::sizeHint().height());
130 QSize size(fm.width(d->m_text), QLabel::sizeHint().height());
145 if (d->isModeElideNone()) {
146 QLabel::setText(
text);
149 d->elideText(this->size().width());
155 QLabel::mouseReleaseEvent(e);
156 if (e->button() != Qt::LeftButton) {
165 if (!d->isModeElideNone()) {
166 d->elideText(e->size().width());
168 QLabel::resizeEvent(e);
174 QLabel::mouseDoubleClickEvent(e);
virtual void mouseDoubleClickEvent(QMouseEvent *e) override
Qt::TextElideMode elideMode() const
virtual QSize sizeHint() const override
void setText(const QString &text)
virtual void mouseReleaseEvent(QMouseEvent *e) override
DockLabel(QWidget *parent=nullptr, Qt::WindowFlags f=Qt::WindowFlags())
virtual QSize minimumSizeHint() const override
virtual void resizeEvent(QResizeEvent *e) override
void setElideMode(Qt::TextElideMode mode)
void setToolTip(QObjectPtr obj, const QString &tip)
#define QX_INIT_PRIVATE(Class)
#define QX_DECLARE_PUBLIC(Class)
#define QX_FINI_PRIVATE()
#define QX_DOCK_END_NAMESPACE
#define QX_DOCK_BEGIN_NAMESPACE