積み重ねられたウィジェットには、現在表示されているコンテンツの最小サイズにサイズを更新する可能性がありません。最大レイヤーの最大サイズを常に表示し、QSizePolicy が同じままである限りそこにとどまります。
私がずっと前に見つけたアプローチは、次のような関数を使用することでした:
void SmartUIWrapper::updateStackedWidgetSize( QStackedWidget* stacked, int index )
{
// Set to size policy ignored for the rest of pages. Set expanding to the actual one
for (int i = 0; i < stacked->count (); ++i)
{
// determine the vertical size policy
QSizePolicy::Policy policy = QSizePolicy::Ignored;
if (i == index)
policy = QSizePolicy::Expanding;
// update the size policy
stacked->widget (i)->setSizePolicy(QSizePolicy::Fixed, policy);
}
}
すべての要素を無視に設定し、選択したウィジェットの垂直方向のポリシーを展開 (または必要なもの) に設定します。
後で、スタイルシートをリロードすると現在のサイズが更新され、ウィジェットのサイズが最小になることがわかりました。しかし、このアプローチは遅すぎて不必要です。
サイズを更新して、表示されている現在のレイヤーの最小サイズに縮小する他の方法を知っていますか?