ウィンドウにポインタとして QVBoxLayout があり、ウィジェットを動的に追加したいと考えています (ユーザーがボタンを押すと、ウィジェットが VBoxLayout に追加されます)。VBoxLayout は、ScrollArea の Layout として設定されます。しかし、ウィジェットを 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));
addControl() スロットはウィジェットを追加するだけです:
m_ControlsLayout->addWidget(new ControlWidget);
高さを更新する必要があることを QScrollArea に伝える必要があると思います。