Привет, как работать с gridLayout если я добавляю в него

QWidget вот так ui->gridLayout->addWidget(new Form(this)); но потом мне надо ui->gridLayout->removeWidget(?); хранить в форме указатель на виджет или как?

11 ответов

17 просмотров

сап либо через запоминание указателя либо findChildern и среди них искать то что нужно

миша
сап либо через запоминание указателя либо findChil...

Лучше все-таки хранить указатели, на мой взгляд лучше воздерживаться от мета программирования по возможности.

'Егор-'Зорин Автор вопроса
Повторев Владимир
Лучше все-таки хранить указатели, на мой взгляд лу...

А как их тогда удалять? если допустим так ui->gridLayout->addWidget(new Form(form_ptr)); ui->gridLayout->removeWidget(form_ptr); Не работает Тогда так? form_ptr = new Form(); ui->gridLayout->addWidget(form_ptr); delete form_ptr; Это работает)

'Егор-'Зорин Автор вопроса
Повторев Владимир
Ну так и делается :)

выглядит всрато, кажется это не правильно просто

'Егор 'Зорин
выглядит всрато, кажется это не правильно просто

Ну тут, как бы, вопрос в принципе возникает зачем его удалять из layout, но не удалять физически? Он же где-то должен остаться тогда. Если он ещё нужен - тогда проще и правильнее, наверное, скрыть. Если он переносится в другой layout, тогда да, надо подругому.

'Егор-'Зорин Автор вопроса
Повторев Владимир
Ну тут, как бы, вопрос в принципе возникает зачем ...

Ну есть комбобокс и в зависимости от варианта в гриде рисуется виджет

'Егор-'Зорин Автор вопроса
Повторев Владимир
Ну тут, как бы, вопрос в принципе возникает зачем ...

Ну тогда делать вектор виджетов и в конструкторе инициализировать а потом показывать или скрывать

'Егор 'Зорин
Ну есть комбобокс и в зависимости от варианта в гр...

QLayout это же просто компоновщик, по сути просто за размеры виджетов отвечает, т.е. удаление виджета из layout просто ломает пересчет его размеров и всё. В случае если нужно скрывать и показывать нужные виджеты можно попробовать для удобства использовать QStackedWidget или QStackedLayout. Тогда непридется удалять и руками отслеживать что один показать, а остальные скрыть.

'Егор 'Зорин
А как их тогда удалять? если допустим так ui->grid...

У последнего варианта у тебя не падает программа после закрытия окна?)

Mr.Mait
У последнего варианта у тебя не падает программа п...

Не должна, "наживую" можно спокойно удалять виджеты, родитель и layout, я так понимаю, отследят сигнал об удалении и все корректно у себя почистят.

Похожие вопросы

Обсуждают сегодня

Ребята, всем привет. Подскажите, пожалуйста, можно ли как-то через бота понять, что этого бота добавили в группу\канал и выдали ему права администратора?
Artem Stormageddon
9
Это переведённый текст с английского. Я не говорю на русском, но могу использовать переводчик Телеграм. Приветствую! Я начинающий веб-разработчик и все еще учусь. В настояще...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
2
А не хотим ли мы развлечься? 😉 Но так чтобы с пользой для наших профессиональных навыков?? 👨‍🎓👩‍🎓 Предлагаю на октябрь запланировать тестовый запуск новой командной игры "Игр...
Andrii Kurdiumov
2
у кого сколько оперативы на базе данных ?
АДИЛЬБЕК
4
Привет всем! Почему этот код не срабатывает при добавлении или удалении пользователя из чата? bot.on('chat_member', async (ctx) => { console.log(ctx); }) bot.launch({allo...
Alexander
5
Через бот апи возможно получить ID стикерпака? Не ссылку.
Vexylon [АФК до 09.09]
5
Привет Хочу сделать аналог iCloud’а для своих проектов, чтобы пользовательская информация хранилась в облаке, была доступна во всех сервисах, её можно было подсасывать везде)...
Виталий
9
В тг можно спарсить всех кто пишет в группе? Если список участников скрыт
S
3
код Event::listen('cms.page.display', function (&$content, $slug, $page, $html) { if (is_object($content)) { dump($content); } else { dump($s...
Point 111
3
Доброе утро, мультиязычные сайты делал кто-нибудь? Какие подводные камни? Нужно чего нибудь допом ставить? Как поступить? В теории сделать две папки ru en и туда кидать страни...
Racoon Mitya
2
Карта сайта