首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让QTextBrowser拥有最大的尺寸?

如何让QTextBrowser拥有最大的尺寸?
EN

Stack Overflow用户
提问于 2017-08-01 05:27:12
回答 1查看 315关注 0票数 0

我有QScrollArea,它有QVBoxLayout,我在那里放置小工具,其中之一是QTextBrowser,我想让QTextBrowser有其内容的大小,并删除其滚动条。我继承了QTextBrowser,更改了sizePolicy,hid滚动条并覆盖了sizeHint(),如下所示:

代码语言:javascript
复制
TextBrowserWidget::TextBrowserWidget(QWidget* parent)
    : QTextBrowser(parent)
{
    setSizePolicy(
        QSizePolicy::Preferred,
        QSizePolicy::Minimum);

    setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
}

QSize TextBrowserWidget::sizeHint() const
{
    if (document()) {
        auto docSize = document()->size();
        return QSize(docSize.width(), docSize.height() + 10);
    } else
        return QTextBrowser::sizeHint();
}

但这是有延迟的,一开始widget变小,1-2秒后变大。我不确定这是不是一个好的解决方案。什么才是正确的方法呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-02 03:36:48

代码语言:javascript
复制
TextBrowserWidget::TextBrowserWidget(QWidget* parent)
    : QTextBrowser(parent)
{
    setSizePolicy(
        QSizePolicy::Minimum,
        QSizePolicy::MinimumExpanding);

    connect(
        this, &TextBrowserWidget::textChanged,
        this, &TextBrowserWidget::updateSize);

    setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
}

QSize TextBrowserWidget::sizeHint()
{
    updateSize();
    return QTextBrowser::sizeHint();
}

void TextBrowserWidget::updateSize()
{
    document()->setTextWidth(viewport()->size().width());
    auto docSize = document()->size().toSize();

    setMinimumWidth(docSize.width());
    setMinimumHeight(docSize.height() + 10);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45425567

复制
相关文章

相似问题

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