Управление памятью Qt для контейнеров

Я знаю, что есть много вопросов об управлении памятью в 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);
    }
}

5
задан Community 23 May 2017 в 11:56
поделиться