如何使QTextBrowser具有最大的尺寸?

How to make QTextBrowser to have biggest size?

本文关键字:何使 QTextBrowser      更新时间:2023-10-16

我有QScrollArea,它有QVBoxLayout,我在其中放置小部件,其中一个是QTextBrowser,我想使QTextBrowser具有其内容的大小并删除其滚动条。 我继承了QTextBrowser,更改了sizePolicy,隐藏了滚动条并覆盖了sizeHint((,如下所示:

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();
}

但这需要延迟,起初小部件变小,1-2 秒后变大。 我不确定这是否是好的解决方案。正确的方法是什么?

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);
}