前言:
專案中常用到字元過長問題,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 }
效果:
第一個預設,第二個右邊省略