Qt 启用wordwrap时,qlabel具有错误的sizeHint()

Qt 启用wordwrap时,qlabel具有错误的sizeHint(),qt,qlabel,Qt,Qlabel,我有一个启用了wordwrap的定制QLabel。调整MyWidget的大小时,它会进行包装,但sizeHint()仍会返回原始高度。 我尝试了这篇文章中的修复方法:但是标签的sizeHint()仍然返回初始高度并生成截断文本 为了让TestLabel返回正确的sizeHint(),我必须做什么 TestLabel类的sizeHint(): QSize TestLabel::sizeHint() const { QSize s = QLabel::sizeHint(

我有一个启用了wordwrap的定制QLabel。调整MyWidget的大小时,它会进行包装,但sizeHint()仍会返回原始高度。 我尝试了这篇文章中的修复方法:但是标签的sizeHint()仍然返回初始高度并生成截断文本

为了让TestLabel返回正确的sizeHint(),我必须做什么

TestLabel类的sizeHint():

    QSize TestLabel::sizeHint() const
    {
       QSize s = QLabel::sizeHint();
       qDebug() << "sizeHint(): " << text() << ": " << s;
       return s;
    }

    QSize TestLabel::minimumSizeHint() const
    {
       QSize s = QLabel::sizeHint();
       qDebug() << "minimumSizeHint(): " << text() << ": " << s;
       return s;
    }
QSize TestLabel::sizeHint()常量
{
QSize s=QLabel::sizeHint();

qDebug()有一次我在QLabel大小提示方面遇到问题-它在QLabel文本更改后没有更新,并且在文本更改后我立即需要它(使用字体度量获取文本宽度不会给出未来标签的像素精确大小)。有一个技巧可以帮助我-我调用invalidate()和activate()对于布局层次结构中包含该标签的所有布局-从最内层到最外层(完全按照该顺序)。然后调用标签的sizeHint()正在返回新的和正确的。我记得这两个函数中的一个已经足够了,但我不记得是哪一个。如果你曾经看到过它们的代码,布局在Qt中是相当混乱的部分。

the
sizeHint()
是布局系统的一个指示器,指示如果小部件拥有世界上所有的空间,它希望使用多少空间。无论是否启用换行,都不会对这一点产生影响,它只是在小部件没有获得布局“要求”的大小时,更改
QLabel
的行为。
    QSize TestLabel::sizeHint() const
    {
       QSize s = QLabel::sizeHint();
       qDebug() << "sizeHint(): " << text() << ": " << s;
       return s;
    }

    QSize TestLabel::minimumSizeHint() const
    {
       QSize s = QLabel::sizeHint();
       qDebug() << "minimumSizeHint(): " << text() << ": " << s;
       return s;
    }