Russian Qt Forum
Сентябрь 30, 2024, 22:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Удаление QLayout  (Прочитано 2299 раз)
Quty
Гость
« : Февраль 18, 2013, 11:40 »

Есть 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'а:
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Февраль 18, 2013, 11:46 »

При удалении лэйаута виджеты размещённые на нём не удаляются, т.к. не являются его потомками и их нужно удалять самостоятельно.
Записан

Qt 5.11/4.8.7 (X11/Win)
Quty
Гость
« Ответ #2 : Февраль 18, 2013, 11:55 »

Спасибо, вопрос снят.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 22.