我需要做一个手动单词包装,因为来自QT的本机WordWrap在错误的位置分裂。我已经完成了文本的包装,但是内容并未显示所有内容。Qlabel像图像一样切割顶部和底部:
我可以将Qlabel安装到没有WordWrap的文本的高度上吗?
我将其写入height
可伸缩:
QLabel lbl;
int count = 0;
QString str = "";
// set lbl text
lbl.setText("hfdsfncsadnfscdajkjkjkjhhkdkcan925");
str = lbl.text();
for(int i = 0;i < str.length();i++)
if(str.at(i).cell() == 'n')
count++;
// resize lbl (width and height)
lbl.resize(lbl.fontMetrics().width("this is the max-length line in qlabel")
, lbl.fontMetrics().height() * (count + 1));
注意:如果更改QLable
字体face
或size
,则此工作!只是可缩放的高度(在每件事都将您的QLabel
Frameshape设置为BOX
之前)。
如果您想执行width
可伸缩符号,则应执行以下步骤:
- 阅读
QLabel
(lblobject
)文本为行 - 计算每个行长
- 选择最大线长度
- 使用
QLabel::fontMetrics().width(QString str)
在width
中调查str
的大小
我希望这可以帮助您...
QLabel
应自动调整到所需的高度,如果将其放置在布局中,是否启用了WordWrap,请参见DOC:http://doc.qt.io/qt-5/layout.html