Qt文本过长时,缩减文本并显示省略号

62 篇文章 105 订阅
17 篇文章 5 订阅

函数原型:

QString QFontMetrics::elidedText(const QString &text, Qt::TextElideMode mode, int width, int flags = 0) const

第二个参数为文本缩略后,省略号所在的位置,可选:

Qt::ElideLeft	0	The ellipsis should appear at the beginning of the text.
Qt::ElideRight	1	The ellipsis should appear at the end of the text.
Qt::ElideMiddle	2	The ellipsis should appear in the middle of the text.
Qt::ElideNone	3	Ellipsis should NOT appear in the text.

1、基本使用

//要显示的超长字符串 
QString strDes = "这是一个非常非常非常长的字符串";  
QFontMetrics fontMetrics(ui.label->font()); 
//如果当前字体下,字符串长度大于label宽度
if(fontMetrics.width(strDes) > ui.label->width()) 
{
	strDes = QFontMetrics(ui.label->font()).elidedText(strDes, Qt::ElideRight, ui.label->width()); 
} 
ui.label->setText(strDes);

假设ui.label的宽度小于当前字体下strDes的长度,则显示为这是一个...

2、封装成函数

QString ElideText(QFont font,int width,QString strInfo) 
{
	QFontMetrics fontMetrics(font); 
	//如果当前字体下,字符串长度大于指定宽度
	if(fontMetrics.width(strInfo) > width) 
	{
		strInfo= QFontMetrics(font).elidedText(strInfo, Qt::ElideRight, width); 
	} 
	return strInfo; 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值