Как организовать прокрутку для виджета?

Здравствуйте. Я новичек в создании пользовательских интерфейсов, поэтому мне крайне недостает знаний популярных приемов, так сказать best practice, как организовать ту, или иную вещь в UI.

Итак, моя задача такова -- создать прямоугольную область, в которую пользователь мог бы добавлять некие виджеты по нажатию на кнопку. При этом, при заполнении видимой части области, можно воспользоваться прокруткой, пролистать вниз и увидеть те виджеты, которые не поместились в видимой по умолчанию части области.

Путем гугления была найдена следующая метода: создаем объект QWidget, создаем объект QScrollArea, вызываем метод setWidget(наш объект QWidget) класса QScrollArea и вроде как виджет внутри прокручиваемой области. Однако, кол-во виджетов, помещающихся в QWidget ограничено и при добавлении новых, до них почему-то нельзя "докрутить".

Как решить сию проблему?

Поясняющая картинка:

В тестовой программе при нажатии на кнопку, в Widget вставляется Label с текстом из lineEdit. И делается отступ. После 8-й Label видимое место в Widget заканчивается и мне нужно, чтобы я мог прокруткой "добраться" до нижесоздающихся Label.

Код:

C++ (Qt)Выделить код

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

MainWindow::MainWindow(QWidget parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QScrollArea scroll = new QScrollArea(this);
    QRect pos = ui->widget->geometry();
    scroll->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    scroll->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
    scroll->setWidget(ui->widget);
    scroll->setGeometry(pos);
}
void MainWindow::on_pushButton_clicked()
{
    QLabel lbl = new QLabel(ui->lineEdit->text(), ui->widget);
    ui->lineEdit->setText("");
    lbl->setGeometry(20, ypos, 60, 20);
    lbl->show();
    ypos += 50;
}