Изучаю вопрос о грамотном управлении памятью. Как я понял, вызывать метод delete()
для каждого виджета необязательно, достаточно при его создании объявить ему parent
и при удалении родителя будут удалены и все его дочерние виджеты.
Теперь, есть окно QMdiSubWindow
. Код создания окна:
CatProducts *catProducts = new CatProducts();
catProducts->setObjectName("catProducts");
mdiArea->addSubWindow(catProducts);
catProducts->show();
Окну присвоен атрибут Qt::WA_DeleteOnClose
. На это окно я вешаю QWidget
как internal widget
, а на него уже остальные виджеты. Код примерно такой:
QWidget *internalWidget = new QWidget(this);
setWidget(internalWidget);
QGridLayout *layout = new QGridLayout(internalWidget);
internalWidget->setLayout(layout);
QTreeView *tree = new QTreeView;
tree->setFixedWidth(100);
layout->addWidget(tree,1, 1, 1, 3);
QPushButton *button = new QPushButton("BUTTON");
layout->addWidget(button, 2, 1);
Теперь диспетчером задач в винде тестирую расход памяти открывая/закрывая моё QMdiSubWindow
. При открытии объём потреблённой памяти увеличивается, а при закрытии не уменьшается. Т.е. занятая память не высвобождается. Как это нужно делать правильно?
И ещё вопрос: на примере layout
'а, передача его в качестве параметра конструктора QTreeView *tree = new QTreeView(layout)
и запись layout->addWidget(tree)
идентичны? Т.е. в обоих случаях layout
является родительским виджетом для tree
?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть база данных с таблицами статистики, 4 идентичных таблицы с разными названиями и иерархией - //категория - подкатегория - проект - таблица...
Ребята, помогите, разобраться на пальцах(ситуацию упростил до самой сути)