Qt QScrollWidget中的QVBoxLayout未更新大小

Qt QScrollWidget中的QVBoxLayout未更新大小,qt,qscrollarea,Qt,Qscrollarea,我的窗口中有一个QVBoxLayout作为指针,希望动态添加小部件(当用户按下按钮时,小部件被添加到VBoxLayout)。VBoxLayout设置为滚动区域中的布局。但是,如果我将小部件添加到VBoxLayout,VBoxLayout的大小不会改变,所有内容都会被压缩 m_ControlsLayout = new QVBoxLayout; //A member variable to add things later { QPushButton *PushButton = ne

我的窗口中有一个QVBoxLayout作为指针,希望动态添加小部件(当用户按下按钮时,小部件被添加到VBoxLayout)。VBoxLayout设置为滚动区域中的布局。但是,如果我将小部件添加到VBoxLayout,VBoxLayout的大小不会改变,所有内容都会被压缩

  m_ControlsLayout = new QVBoxLayout; //A member variable to add things later
  {
    QPushButton *PushButton = new QPushButton(tr("Add a new control"));
    connect(PushButton, SIGNAL(clicked()), this, SLOT(addControl())); //Adds it
    m_ControlsLayout->addWidget(PushButton, 1);
  }
  for(int i=0;i<10;i++)  //I am adding 10 useless Widgets to fill the space
    addControl();

  QScrollArea *ScrollArea = new QScrollArea;
  connect(this)
  ScrollArea->setWidget(Layout2Widget(m_ControlsLayout));

我想我必须告诉QScrollArea它应该更新它的高度。

当使用滚动区域显示自定义小部件“ControlWidget”的内容时,确保子小部件的大小提示设置为合适的值是很重要的。
在自定义小部件类上重新实现虚拟函数“QSize QWidget::sizeHint()。

您是否尝试过
scrollArea->SetWidgetResizeable(true)
?我现在尝试过,如果添加此函数,VBoxLayout的大小将调整为scrollArea的高度。没有滚动条出现,所有内容都非常小(或者如果小部件较少,则所有内容都被拉伸)
  m_ControlsLayout->addWidget(new ControlWidget);