Qt5 设置label自动换行,同理可用于其它文字显示的自动换行

Qt5做出一个根据内容自动换行的label

百度上一堆复制粘贴的

  1. 让QLabel自适应text的大小,直接用下面的代码:
    LabelName->adjustSize();
  2. 让QLabel能够自动判断并换行显示:
    LabelName->setGeometry(QRect(328, 240, 329, 27*4)); //四倍行距
    LabelName->setWordWrap(true);
    LabelName->setAlignment(Qt::AlignTop);

但是在做的时候发现这样是有局限性的,如果输入一长串英文字符串的话是不会换行的。
同样,还有一些做法,比如
QLabel自动换行
做法复杂,而且难以理解。最后,自己捣鼓一天弄出来了。

我们在这里要用到的模块是PyQt中的Font和QFontMetrics类
QFontMetrics

QFontMetrics中有一个函数是horizontalAdvance可以获取覆盖字符串所需要的矩阵的像素宽度,height可以获得字符串所需要的矩阵的像素高度,然后根据这个像素宽度,再裁切下字符串就可以自动换行了。

QFont font("times", 24);
QFontMetrics fm(font);
int pixelsWide = fm.horizontalAdvance("What's the width of this text?");
int pixelsHigh = fm.height();

你可能感兴趣的:(Qt5 设置label自动换行,同理可用于其它文字显示的自动换行)