Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > удаление layout'ов из widget'ов


Автор: becks 22.5.2012, 11:58
Подскажите еще по такому вопросу.

В зависимости от значения QComboBox  создавать в QGroupBox динамически некоторые виджеты (QLineEdit, QLabel). Добавляю их в layot, у QGroupBox устанавливаю этот layot.


Код

void entity_Dialog::on_entity_comboBox_currentIndexChanged(int index)
{
   QVBoxLayout *layot = new QVBoxLayout;
   if (index == 0)
      layot->addWidget(namelbl);
   else if ()
      layot->addWidget(nameedit);
   ui->groupBox->setLayout(layot);
}




Как при изменении значения QComboBox грамотно почистить\заменить\удалить  layot у QGroupBox.
Спасибо. 

Автор: _GRIN_ 22.5.2012, 12:36
проще всего сами виджеты (которые в лайоут засунуты) (прятать/показывать (QWidget::setVisible(bool)) или удалять) - а лайоут опять же сам всё отобразит волшебным образом =)
удалить лайот у виджета можно задав ему нулевой лайоут QWidget::setLayout(0); - правда за всю практику мне этого ни разу не требовалось - ты хочешь странного =)

Автор: bsa 22.5.2012, 13:52
Делаешь внутри QGroupBox HBoxLayout, затем в него добавляешь QWidget'ы по количеству возможных значений QComboBox. Делаешь их скрытыми. При изменении QComboBox скрываешь текущий, показываешь новый. И ничего удалять не надо (удаление/создание виджетов несколько фрагментирует кучу).

Автор: math64 22.5.2012, 14:13
Вот моя тема по пожожему вопросу (используется QFormLayout, с QVBoxLayout аналогично):
http://forum.vingrad.ru/forum/topic-347379/kw-qformlayout-qdatawidgetmapper-qsqltablemodel.html
Если число пунтов в QComboBox небольшое, можно использовать QStackedLayout.
Сигнал QComboBox::currentIndexChanged() соединяется со слотом QStackedLayout::setCurrentIndex().

Автор: becks 22.5.2012, 16:38
Большое спасибо. Благодаря вашей помощи сделал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)