[PySide] QPushButton にレイアウトを設定している場合にサイズがおかしい

QPushButtonQVBoxLayout などを setLayout() で設定している場合に、ボタンの縦のサイズが小さすぎてレイアウトが潰れた状態になりました。

レイアウトのサイズに応じてボタンのサイズを変更するにはどうしたらいいのかと悩んでいたら以下の記事を見つけました。

sizeHint() をオーバーライドし、レイアウトが設定されていればそのサイズを、設定されていなければ基底クラスのサイズを返せばいいようです。

  • PySide 6.2.2.1
def sizeHint(self):
    if self.layout():
        # the button now has a layout, return its size hint
        return self.layout().sizeHint()
    # no layout set, return the result of the default implementation
    return super().sizeHint()

参考 URL

Hugo で構築されています。
テーマ StackJimmy によって設計されています。