0
我有QScrollArea有QVBoxLayout我放置小部件,其中之一是QTextBrowser,我想讓QTextBrowser有其內容的大小,並刪除它的滾動條。 我繼承QTextBrowser,改變sizePolicy,藏滾動條和overrided sizeHint()這樣的:如何使QTextBrowser具有最大尺寸?
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秒後,它變得更大。 我不確定這是不錯的解決方案。什麼是正確的做法?
隱藏酒吧不會阻止你的小部件裁剪內容,它不是一個尺寸的政策(即它不**意味着_resize,所以你不需要scrollbar_)。你可以刪除它,當你的部件將有你想要的大小滾動條將被隱藏。你爲什麼改變QSizePolicy?默認_Expanding_似乎是你想要的。你可以看一下[QAbstractScrollArea :: sizeAdjustPolicy](http://doc.qt.io/qt-5/qabstractscrollarea.html#sizeAdjustPolicy-prop),也許這會做你想要的而不用觸及'sizeHint() '。 – ymoreau
@ymoreau,是的,我知道滾動條政策。 使用默認大小策略小部件的大小減小。 而sizeAdjustPolicy也不起作用 – devalone
@ymoreau,我解決了它(向下看)。我不確定它是否是最好的解決方案,但它的工作非常棒。 – devalone