为 QScrollArea 保留空间

Posted

技术标签:

【中文标题】为 QScrollArea 保留空间【英文标题】:Reserving Space for QScrollArea 【发布时间】:2012-07-21 19:55:42 【问题描述】:

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

【问题讨论】:

myScrollArea->setHorizo​​ntalScrollBarPolicy(Qt::ScrollBarAlwaysOn) 和 myScrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn) 怎么样? 【参考方案1】:
scrollArea->setWidgetResizable(false);

【讨论】:

【参考方案2】:

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

我为滚动小部件和 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);

我还找到了一个错误报告:QTBUG-2347 QScrollArea: a new scroll policy that reserves space for the scroll bar,它已关闭。但是不知道bug是否修复,有什么解决办法。

【讨论】:

以上是关于为 QScrollArea 保留空间的主要内容,如果未能解决你的问题,请参考以下文章

QScrollArea 垂直 sizePolicy - 将内容调整到最大高度

如何在 PySimpleUI 中的可滚动列内保留空间?

如何在父小部件的右侧绘画?

QScrollArea 保存为图片 (jpg,tiff,png)

7.3 QScrollArea滚动视图

QT5-控件-QScrollArea-可以用于把一个窗口分割为多个-比如根据图片大小显示滚动条