在绘制文本时经常会遇到文本长度不确定,导致绘制宽度无法确定的问题。
一般这种我都是设置一个固定的绘制宽度,显示部分文本,显示不足部分用省略号表示。
QString Tool::getElidedText(QFont font, QString str, int MaxWidth) const
{
QFontMetrics fontWidth(font);
int width = fontWidth.width(str); //计算字符串宽度
if (width >= MaxWidth) //当字符串宽度大于最大宽度时进行转换
{
str = fontWidth.elidedText(str, Qt::ElideRight, MaxWidth); //右部显示省略号
}
return str;
}
省略号位置可以设置, 修改fontWidth.elidedText(str, Qt::ElideRight, MaxWidth)
中Qt::ElideRight
参数即可
enum TextElideMode
{
ElideLeft, //省略号在左侧
ElideRight, //省略号在右侧
ElideMiddle, //省略号在中间
ElideNone //无省略号
};