Qt 重新加载样式表有助于调整QStackedWidgets的大小

Qt 重新加载样式表有助于调整QStackedWidgets的大小,qt,qt4,stylesheet,stacked,Qt,Qt4,Stylesheet,Stacked,堆叠小部件无法将大小更新为当前显示内容的最小大小。 它总是显示最大层的最大大小,并且只要QSizePolicy保持不变,它就保持在那里 我很久以前发现的一个方法是使用如下函数: void SmartUIWrapper::updateStackedWidgetSize( QStackedWidget* stacked, int index ) { // Set to size policy ignored for the rest of pages. Set expanding to the

堆叠小部件无法将大小更新为当前显示内容的最小大小。 它总是显示最大层的最大大小,并且只要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);
  }
}
void SmartUIWrapper::updateStackedWidgetSize(QStackedWidget*堆叠,整数索引)
{
//设置为忽略其余页面的大小策略。将扩展设置为实际页面
对于(int i=0;icount();+i)
{
//确定垂直大小策略
QSizePolicy::Policy Policy=QSizePolicy::忽略;
如果(i==索引)
policy=QSizePolicy::正在扩展;
//更新大小策略
堆叠->小部件(i)->setSizePolicy(QSizePolicy::Fixed,policy);
}
}
它将所有元素设置为忽略,然后设置正在扩展的选定小部件的垂直策略(或任何您想要的)

后来我发现重新加载styletheet会更新当前的大小,并使小部件的大小调整到最小。但这种方法太慢,没有必要


你知道有没有其他方法可以将当前图层中的尺寸缩小到最小?

我实际上也做过同样的事情。我的解决方案中唯一的区别是继承了
QStackedWidget
,这允许我在Designer中使用小部件升级。正确的方法是对小部件使用
QStackedLayout
adjustSize()
,它包含SUPD。它一次只显示一个小部件,一个小部件应该只根据当前的可视性调整其大小。我想我已经试过了。让我查一查,谢谢。@Pie_Jesu不起作用。AdjustSize()对此根本不起作用。我想这是不同政策的结合。您会为stackedwidget设置哪个策略?