我需要手动换行,因为 Qt 的原生 wordWrap 在错误的地方拆分。我已经对我的文本进行了换行,但内容并未显示所有内容。 QLabel 像图像一样切割顶部和底部:
我可以在不使用 wordWrap 的情况下使 Qlabel 适合其中文本的高度吗?
最佳答案
我把它写成 height
scalable :
QLabel lbl;
int count = 0;
QString str = "";
// set lbl text
lbl.setText("hfdsf\ncsad\nfsc\dajkjkjkjhhkdkca\n925");
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
scalable-content,你应该做这些步骤:
- 逐行读取
QLabel
(lblobject
)文本 - 计算每一行的长度
- 选择最大行长
- 使用
QLabel::fontMetrics().width(QString str)
调查str
大小width
希望对你有帮助...
关于c++ - 在没有 WordWrap 的情况下适合 QLabel 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47682196/