前言:
项目中常用到字符过长问题,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 }
效果:
第一个默认,第二个右边省略