网上大部分博客关于自动换行的实现都是下面的方式,
- 让QLabel自适应text的大小,直接用下面的代码:(改变字体大小)
LabelName->adjustSize(); - 让QLabel能够自动判断并换行显示 (处理不了没有空格的英文过长文字)
LabelName->setGeometry(QRect(328, 240, 329, 27*4)); //四倍行距
LabelName->setWordWrap(true);
LabelName->setAlignment(Qt::AlignTop);
所以只能自己写一个函数处理字符串实现换行了
inline QString LineFeed(const QString strSrcText, int nWidth, QFont& font)
{
QString strText = strSrcText;
int nIndex = 1;
QFontMetrics fm(font);
if (!strText.isEmpty())
{
for (int i = 1; i < strText.size() + 1; i++)
{
if (fm.width(strText.left(i)) > nWidth* nIndex)
{
AntoIndex++;
strText.insert(i - 1, "\n");
}
}
}
return strText;
}