PyQt5 QWidget 将固定宽度设置为最小可用尺寸

PyQt5 QWidget set fixed width to smallest available size

我有一个布局,我添加了一堆小部件(现在是 QPushButton,但可以是任何 QWidget 元素),默认情况下它们在添加时填满整个宽度。由于我的自定义大小处理使用此宽度来移动元素,因此它们将每个元素注册为与布局相同的大小,这导致我的函数移动它们,即使在我调整大小后它们变小了。

那么,当我添加小部件时,有没有办法将其缩小到最小尺寸以容纳内容?沿线的东西:

item = QPushButton("somestuff") # | QLabel | QWidget | etc
item.setFixedWidth(item.contents.size().width())

要计算最小宽度,您可以使用 QFontMetrics

item = QPushButton("somestuff") # | QLabel | QWidget | etc
fm = QFontMetrics(item.font())
item.setFixedWidth(fm.width(item.text()))