一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

前言:

项目中常用到字符过长问题,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 }

效果:

第一个默认,第二个右边省略

 

posted on 2024-03-18 13:13  一杯清酒邀明月  阅读(70)  评论(0编辑  收藏  举报