私はついにそれを理解しました。これは、スクロールエリア内のサブウィジェットの 1 つの幅を調べるために使用していたハック コードです。
def _restrictWidthToFit(self):
layout = self._scroll.widget().layout()
if layout.count() > 0:
fw = layout.itemAt(0).widget().sizeHint().width()
sw = self._scroll.verticalScrollBar().sizeHint().width()
w = fw + sw
return w
トリックは、最初にウィジェットをスクロールエリアに追加するときに、以前にこの幅を設定していたことです。ただし、この時点ではサイズが Qt によって完全に埋められていないようです。したがって、上記のメソッドを使用して、showEvent() をオーバーライドして幅を設定しました。
def showEvent(self, ev):
super(UIFilterCollection, self).showEvent(ev)
self._scroll.setFixedWidth(self._restrictWidthToFit())
この時点で横幅が埋まっているので動きそうです。
また、サブウィジェットはすべて同じ幅であるため、すでに同じ幅になっていることにも注意してください。