Qt QLable 字元過長省略

一杯清酒邀明月發表於2024-03-18

前言:

專案中常用到字元過長問題,Qt預設的省略並不好用,不是自己想要的;

QFontMetri

可使用 QFontMetri

text的畫素寬度超過width,將返回字串的一個省略版本取決於mode。否則將返回原字串;

mode:

1     enum TextElideMode {
2         ElideLeft,
3         ElideRight,
4         ElideMiddle,
5         ElideNone
6     };

一般我們喜歡右邊省略

code:

 1 MainWindow::MainWindow(QWidget *parent) :
 2     QMainWindow(parent),
 3     ui(new Ui::MainWindow)
 4 {
 5     ui->setupUi(this);
 6     const QString str =  "aaaaaaaaadddbbbbccccccr";
 7     ui->label->setText(str);
 8  
 9     QString omitStr = GetOmitString(ui->label_2->font(),str,ui->label_2->width());
10     ui->label_2->setText(omitStr);
11  
12 }
13 QString MainWindow::GetElideString(const QFont &font, const QString content, const int width)
14 {
15    QFontMetrics fontMetrics(font);
16    return fontMetrics.elidedText(content, Qt::ElideRight, width);
17 }

效果:

第一個預設,第二個右邊省略

相關文章