Stacked Widgets无法将大小更新为显示的当前内容的最小大小。 只要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);
}
}
它将所有元素设置为Ignored,然后设置所选小部件的垂直策略,即扩展(或任何您想要的)。
后来我发现重新加载样式表会更新当前大小并使窗口小部件调整到最小。但这种方法太慢而且没必要。
您是否知道更新尺寸以缩小到当前显示的最小尺寸的其他方法?