QT QScrollArea如何跟随内部widget大小变化
时间: 2024-03-09 10:51:43 浏览: 364
要让QScrollArea跟随内部widget大小变化,需要使用QScrollBar的setWidgetResizable()方法将其设置为可调整大小。这可以通过在QScrollArea上调用setWidgetResizable(true)方法来实现。
然后,将您的QWidget添加到QScrollArea中,并使用setMinimumSize()和setMaximumSize()方法设置QWidget的大小范围。
最后,当您的QWidget的大小发生变化时,您可以使用QScrollBar的updateGeometry()方法强制更新QScrollArea的大小和布局。
以下是一个示例代码片段,展示如何使用QScrollArea跟随内部widget大小变化:
```python
scrollArea = QScrollArea(parent)
scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
scrollArea.setWidgetResizable(True)
innerWidget = QWidget(scrollArea)
innerWidget.setMinimumSize(400, 400)
innerWidget.setMaximumSize(800, 800)
layout = QVBoxLayout(innerWidget)
layout.addWidget(QLabel("Hello World!"))
scrollArea.setWidget(innerWidget)
# 当QWidget的大小发生变化时,更新QScrollArea的大小和布局
def onInnerWidgetResized():
scrollArea.updateGeometry()
innerWidget.resizeEvent = onInnerWidgetResized
```
阅读全文