Я сделал нечто подобное с несколькими контейнерами QQueue, заполненными элементами QLabel и QLineEdit.Просто добавляйте и удаляйте элементы, когда пользователь желает более или менее.Можно объединить это с QGridLayout и поместить вещи туда, где вам нужно.Не уверен, что это лучший способ, но у меня хорошо работает.
http://doc.trolltech.com/4.4/qqueue.html
QQueue<QLineEdit *> linedit;
QGridLayout *gridboxLayout;
gridboxLayout= new QGridLayout();
linedit.enqueue(new QLineEdit ());
gridboxLayout->addWidget(linedit.last(),row,column);
this->setLayout(gridboxLayout);
Вам нужно будет добавить материал для отслеживания строк, столбцов и элементов и тому подобноено это базовая настройка.Просто продолжайте добавлять новые элементы в QQueue и вставляйте в новую строку gridLayout.Вы можете даже ссылаться на них по строкам и позже удалять их.
Другой простой способ сделать это, который будет работать с дизайнером, если у вас есть разумное максимальное количество элементов, - это просто построить все это.и скрыть виджеты, которые вы не хотите видеть, пока они вам не понадобятся.