【问题标题】:Dynamic text size QLabel动态文本大小 QLabel
【发布时间】:2016-07-19 19:17:08
【问题描述】:

确定文本大小是否超过 QLabel 宽度的最佳方法是什么? 并据此更改文本大小?

我有一个将自动换行选项设置为 true 的 QLabel,但是当文本太长时,它会从左侧和右侧被裁剪。

【问题讨论】:

  • 您的标签小部件是否由布局管理?如果是这样,您应该在最顶部的布局 (label->widnow()->layout()) 上设置 sizeConstraint,这样窗口将始终足够大以容纳所有内容。

标签: c++ qt text qlabel


【解决方案1】:

您可能想尝试这种方法:

QLabel label;
QRect r = label.fontMetrics().boundingRect( "My text" ) );
int textWidth = r.width();

【讨论】:

  • @Hcorg,文本的宽度不依赖于 QLabel 的属性。
  • 是的,我知道。我的意思是 - 它不适用于可以容纳多行文本的标签,使用自动换行。对于单行标签 fontMetrics()....width() 与 label.width() 相比应该有所帮助。
  • 我在回复SO: How to automatically increase/decrease text size in label in Qt 时尝试根据标签大小管理文本大小。因此,我意识到QFontMetrics::boundingRect() 提供了不准确的结果。深入挖掘,我发现了一个更精确的计算,重复了 QLabel 的内部计算,可以在那里找到。所以,我觉得这里值得一提。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
  • 2019-11-26
  • 2022-09-25
相关资源
最近更新 更多