Qt5做出一个根据内容自动换行的label
百度上一堆复制粘贴的
- 让QLabel自适应text的大小,直接用下面的代码:
LabelName->adjustSize();- 让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中让QLabel根据内容自动换行的方法。先给出常规代码,但发现输入长串英文字符串时存在局限性。最后提到使用PyQt中的Font和QFontMetrics类,利用其获取字符串所需矩阵像素宽度和高度的函数,裁切字符串实现自动换行。
1万+

被折叠的 条评论
为什么被折叠?



