1// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: GPL-3.0-or-later
4
5#include "elidedlabel.h"
6
7#include <QString>
8
9class ElidedLabelPrivate
10{
11 friend class ElidedLabel;
12 QString sourceText;
13};
14
15ElidedLabel::ElidedLabel(QWidget *parent)
16 : QLabel (parent)
17 , d (new ElidedLabelPrivate)
18{
19
20}
21
22ElidedLabel::~ElidedLabel()
23{
24 if (d) {
25 delete d;
26 }
27}
28
29void ElidedLabel::setText(const QString &text)
30{
31 d->sourceText = text;
32 QString resultText;
33 QFontMetrics font(this->font());
34 int font_size = font.horizontalAdvance(text);
35 int resize_width = width();
36 if(font_size > resize_width) {
37 resultText = font.elidedText(d->sourceText, Qt::ElideRight, resize_width);
38 } else {
39 resultText = d->sourceText;
40 }
41 QLabel::setText(resultText);
42 QLabel::setToolTip(text);
43}
44
45QString ElidedLabel::text()
46{
47 return d->sourceText;
48}
49