防止 QLabel 调整父 Widget 的大小

Prevent QLabel from resizing parent Widget

我在 QFrame 里面有一个 QLabel

有时 QLabel 中的文本过多,它会调整 QFrame 所在的位置。

现在,我想阻止 QLabel 调整它所在的 QFrame 的大小。 我不想限制行数或设置 QLabel 的最大大小,因为如果应用程序的 window 大小增加,我确实希望允许 QLabel 增加尺寸。

只是想阻止 QLabel 扩展它的父项。

有什么干净的方法吗?

使用 QScrollArea(继承 QFrame),并隐藏其滚动条:

label = QtGui.QLabel(text)
frame = QtGui.QScrollArea()
frame.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
frame.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
frame.setWidgetResizable(True)
frame.setWidget(label)

这有一个附带的好处,即用户仍然可以通过滚动鼠标滚轮来查看任何隐藏的文本。