需求
设置某个编辑框,当文本长度比显示宽度要长时, 依据需求要将文本后面显示为省略号。
我在设计时
QFontMetrics metrics(m_contentFont);
QString showText = metrics.elidedText(content, Qt::ElideRight, m_pixResolution.width() - 20);
ui.label->setText(showText);
结果如下
这种设计有一个问题就是, 当我输入QString 哪怕包含换行符时, 此时依然只显示一行并且后面显示省略号。为了能够实现可以依据实际显示, 对于处理包含换行符时, 采用split将换行符作为分割,得到QStringList, 然后一次遍历进行elidedText处理得到相应的字符串,然后在其后面追加换行符并合并所有字符串。