Qt QScrollArea滚动区域无法正常滚动,如何调整代码实现预期功能?
QScrollArea滚动失效修复方案
现有代码问题
- 缺少将内容部件绑定到滚动区域的核心代码
- 未使用布局管理内部控件,无法自动计算内容总高度触发滚动
- 存在代码笔误:
QtCore.t应为QtCore.QRect
需新增/修改的代码
# 修正笔误 self.i_flo_grb.setGeometry(QtCore.QRect(10, 10, 201, 371)) # 为滚动区内容部件添加垂直布局,后续所有需要滚动的控件都添加到该布局中 self.scroll_content_layout = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents) self.scroll_content_layout.setContentsMargins(10, 10, 10, 10) # 将现有需要滚动的控件加入布局,比如当前的i_flo_grb、后续新增的标签、文本浏览器等 self.scroll_content_layout.addWidget(self.i_flo_grb) # 后续新增控件直接执行 self.scroll_content_layout.addWidget(你的控件对象) 即可 # 核心:将内容部件绑定到滚动区域 self.scrollArea.setWidget(self.scrollAreaWidgetContents)
特殊场景说明
如果你坚持使用绝对定位摆放控件,不想用布局,可在所有控件添加完成后,手动设置内容部件的最小高度,值需要大于所有内部控件的总高度即可触发滚动,示例:
# 示例:当前内部控件总高度为390,设置最小高度为400 self.scrollAreaWidgetContents.setMinimumHeight(400)
该方案后续新增控件时需要同步更新最小高度,维护成本较高,推荐使用布局方案。
内容的提问来源于stack exchange,提问作者Maurice Omosh
相关产品推荐
相关产品推荐

