为QScrollArea保留空间

时间:2012-07-21 19:55:43

标签: c++ qt

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

2 个答案:

答案 0 :(得分:1)

scrollArea->setWidgetResizable(false);

答案 1 :(得分:0)

我遇到了这个问题而刚刚解决了(可能不完全)。

我为scroll widget和QScrollArea设置了固定宽度,并设置了QScrollArea Horizo​​ntal SizePolicy,并隐藏了Horizo​​ntalScrollBar。 示例代码

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-2347 QScrollArea: a new scroll policy that reserves space for the scroll bar,它已经关闭了。但我不知道这个错误是否已修复,解决方案是什么。