在没有WordWrap的情况下调整QLabel高度

时间:2017-12-06 19:39:01

标签: c++ qt word-wrap qstring qlabel

我需要做一个手动自动换行,因为来自Qt的原生wordWrap在错误的地方分裂。我已经完成了对我的文本的包装,但内容没有显示所有内容。 QLabel像图像一样切割顶部和底部:

我可以在没有wordWrap的情况下将Qlabel放到其中文本的高度吗?

2 个答案:

答案 0 :(得分:0)

QLabel如果将其放置在布局中,应自动调整到所需的高度,如果启用了wordWrap并不重要,请参阅文档: http://doc.qt.io/qt-5/layout.html

答案 1 :(得分:0)

我将其写为height可扩展:

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字体facesize,这项工作就有效!只是在高度上可扩展(在每件事物之前将QLabel frameShape设置为BOX)。

如果您想要width可扩展内容,则应执行以下步骤:

  • 以行到行
  • 阅读QLabel(lbl object)文字
  • 计算每一行长度
  • 选择最大行长度
  • QLabel::fontMetrics().width(QString str)
  • 中使用str调查width尺寸

我希望这可以帮助你...