首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启用字包装时,qlabel有错误的sizeHint()

启用字包装时,qlabel有错误的sizeHint()
EN

Stack Overflow用户
提问于 2013-04-08 19:50:18
回答 1查看 3.4K关注 0票数 4

我有一个自定义的QLabel,启用了字包装。调整MyWidget大小时,它会包装,但sizeHint()仍然返回原始高度。我尝试了这个post:QLabel cutting off text on resize的修复,但是标签的sizeHint()仍然返回初始高度并导致截止文本。

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

代码语言:javascript
复制
    MyWidget::MyWidget(QWidget *parent)
    : QFrame(parent)
    {
        label = new TestLabel(this);
        label ->setWordWrap(true);
        label ->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
        mLayout->addWidget(label);
    }


    void MyWidget::resizeEvent( QResizeEvent * event )
    {
       int height = label->heightForWidth(label->width());
       label->setMaximumHeight(height);
       //label->setMinimumHeight(height); // gets called all the time
       label->updateGeometry();
       QFrame::resizeEvent(event);
    }

sizeHint()类的TestLabel:

代码语言:javascript
复制
    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;
    }
EN

回答 1

Stack Overflow用户

发布于 2013-08-21 14:22:46

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15887672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档