c++ - 在没有 WordWrap 的情况下适合 QLabel 高度

标签 c++ qt word-wrap qstring qlabel

我需要手动换行,因为 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 字体 facesize,此操作有效!只是高度可缩放(在每件事之前将您的 QLabel frameShape 设置为 BOX)。

如果你想做 width scalable-content,你应该做这些步骤:

  • 逐行读取QLabel(lbl object)文本
  • 计算每一行的长度
  • 选择最大行长
  • 使用 QLabel::fontMetrics().width(QString str) 调查 str 大小 width

希望对你有帮助...

关于c++ - 在没有 WordWrap 的情况下适合 QLabel 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47682196/

相关文章:

CSS:如何在奇怪的情况下强制自动换行?

c++ - 最低订购要求

c++ - 如何等待进程完成 C++

c++ - 为 qt 安装小部件

c++ - HWID Windows - 使用 Qt 框架

php - HTML 字符串中的自动换行/剪切文本

ios - iOS换行更均匀吗?

c++ - 为什么不在 GotW 54 中调整和清除作品?

c++ - 使用 Dijkstra 在 boost 图中查找最短路径

c++ - 将YUV420p QVideoFrame转换为灰度OpenCV垫