Есть GroupBox, layout ему задаю в конструкторе родительского виджета и представляет он из себя QGridLayout с QLineEdit в каждой ячейке. Необходимо во время выполнения программы изменить кол-во lineEdit'ов. Делаю так:
delete firstMatrixGroupBox->layout();
firstMatrixGroupBox->setLayout(createMatrixLayout(m, n));
Функция createMatrixLayout:
QGridLayout* Form::createMatrixLayout(quint8 rowCount, quint8 columnCount)
{
QLineEdit *lineEdit;
QGridLayout *resultLayout = new QGridLayout();
for(quint8 i = 0; i < rowCount; ++i) {
for(quint8 j = 0; j < columnCount; ++j) {
lineEdit = new QLineEdit();
lineEdit->setAlignment(Qt::AlignHCenter);
lineEdit->setValidator(digitValidator);
lineEdit->setObjectName(QString("%1_%2").arg(QString::number(i), QString::number(j)));
resultLayout->addWidget(lineEdit, i, j);
connect(lineEdit, SIGNAL(textChanged(QString)), SLOT(on_matrixCell_textChanged()));
}
}
return resultLayout;
}
Изначально форма выглядит так:
После изменения layout'а: