为QScrollArea预留空间

Reserving Space for QScrollArea

本文关键字:空间 QScrollArea      更新时间:2023-10-16

我正在使用带有自定义QWidget的QScrollArea。我面临的问题是,每当滚动条出现时,都会导致小部件中元素的移动。所以,我想保留一些空间,这样当滚动条出现或消失时,小部件就不会受到影响。我怎样才能做到这一点?

scrollArea->setWidgetResizable(false);

我遇到了这个问题,并刚刚解决了它(可能还没有完全解决)。

我为滚动小部件和QScrollArea设置了固定的宽度,并将QScrollAreaHorizontalSizePolicy设置为固定,并隐藏HorizontalScrollBar。样本代码

QWidget *pWidget = new QWidget(this);
pWidget->setFixedWidth(500);
pWidget->setLayout(...)
QScrollArea *pScrollArea = new QScrollArea();
// Same with widget
pScrollArea->setFixedWidth(500);
pScrollArea->setWidget(pWidget);
pScrollArea->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);
// Needed.
pScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);

我还发现了一个Bugreport:QTBUG-2347QScrollArea:一个新的滚动策略,为滚动条保留空间,并且它是关闭的。但我不知道这个错误是否已经修复,解决方案是什么。