【问题标题】:Pyside: QScrollArea Resizing widgetsPyside:QScrollArea 调整小部件的大小
【发布时间】:2018-04-18 22:24:36
【问题描述】:

我遇到了 QScrollArea 问题,它正在调整我的小部件的大小。我希望滚动区域内的所有布局和小部件都具有固定的高度。如果我设置 scroll.setWidgetResizable(True) 它将根据生成的小部件的数量调整所有内容。如果我将其设置为 False,那么我的小部件将不会出现。这是我的代码示例

container = QtWidgets.QWidget()
list_layout = QtWidgets.QVBoxLayout()
container.setLayout(list_layout)
scroll = QtWidgets.QScrollArea()
scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
scroll.setWidgetResizable(True)
scroll.setWidget(container)

for x in range 10:
    product_container = QtWidgets.QFrame()
    product_container .setFixedHeight(50)
    row = QtWidgets.QHBoxLayout(product_container)
    name = QtWidgets.QLabel(y)
    cbox = QtWidgets.QCheckBox()
    row.addWidget(name)
    row.addWidget(cbox)
    seperator = QtWidgets.QFrame()
    separator.setFrameStyle(QtWidgets.QFrame.HLine | QtWidgets.QFrame.Plain)
    list_layout.addWidget(product_container)
    list_layout.addWidget(separator)

我尝试将我生成的水平布局容器设置为具有固定大小(这确实有效 - 如果我设置背景颜色,它会显示我的小部件周围的框更小)但是水平布局和QFrame 行仍然是随机的。

我的最终目标是在我的水平布局和分隔符之间保持固定距离

【问题讨论】:

  • 您可以在图像中指出观察到“水平布局和 QFrame 线之间的空间仍然是随机的”
  • 添加了水平布局中显示容器小部件背景颜色的图像
  • @ghost654。我的回答能解决你的问题吗?我基于您问题中的代码,但我不确定这是否与生成这些屏幕截图的代码相同。
  • 是的,非常感谢您的帮助!这绝对有效

标签: python user-interface pyside maya qscrollarea


【解决方案1】:

如果行的高度是固定的,你需要做的就是在容器布局的末尾添加一个可扩展的空间,以便行都向上推:

container = QtWidgets.QWidget()
list_layout = QtWidgets.QVBoxLayout()
container.setLayout(list_layout)
...
for x in range(10):
    ...
    list_layout.addWidget(separator)
list_layout.addStretch()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 2014-02-17
    • 2016-09-10
    • 1970-01-01
    相关资源
    最近更新 更多