Я знаю, что есть много вопросов об управлении памятью в Qt. Также я прочитал следующие вопросы SO:
Но в моем случае я опять запуталась!
У меня есть QTableWidget
с именем myTable
. Я добавляю к нему виджеты времени выполнения с помощью setCellWidget
:
void MyClass::build()
{
for (int i=LOW; isetCellWidget(i, 0, widget);
}
}
Затем я удаляю все элементы, как показано ниже:
void MyClass::destroy()
{
for (int i = myTable->rowCount(); i >= 0; --i)
myTable->removeRow(i);
}
Эти методы вызываются много раз в течение длительного времени. И myTable
как родитель этих виджетов будет жить в течение всего времени жизни программы.
Метод дозирования destroy ()
полностью и автоматически освобождает память? Или я должен сам удалить
выделенные виджеты, как показано ниже?
void MyClass::destroy2() // This maybe causes to crash !!
{
for (int i = myTable->rowCount(); i >= 0; --i)
{
QWidget *w = myTable->cellWidget(i, 0);
delete w;
myTable->removeRow(i);
}
}