Нужно ли вызывать delete для QTreeWidgetItem или .clear() делает это?
void MainWindow::ReadDir(const QString &path, QTreeWidgetItem *itm, int level)
{
QDir mDir(path);
QString format;
for(int i = 0; i<level; i++ )
format += " ";
mDir.setFilter(QDir::NoDotAndDotDot | QDir::Dirs | QDir::Files);
for(QFileInfo temp : mDir.entryInfoList())
{
QTreeWidgetItem *child = new QTreeWidgetItem(2);
child->setText(0, temp.fileName());
child->setText(1, temp.absoluteFilePath());
itm->addChild(child);
if(temp.isDir())
ReadDir(temp.absoluteFilePath(), child, level+1);
}
}
void MainWindow::on_pushButton_clicked()
{
ui->treeWidget->clear();
QTreeWidgetItem * itm = new QTreeWidgetItem(2);
itm->setText(0, "Root");
ReadDir("D:\\", itm, 0);
ui->treeWidget->addTopLevelItem(itm);
}
Выделенная память освобождается, если смотреть в диспетчере задач. Все ли корректно? Получается, clear()
удаляет родителя и всех его потомков?
Источник: Stack Overflow на русском