1.clear() 用来清理所有的QListWidgetItem项,释放所有项的QListWidgetItem对象内存?
2.takeItem()?takeItem(int row)只清理第row项,不释放第row项的QListWidgetItem对象内存
3.removeItemWidget需要知道删除的Item的对象,但后面需要delete Item的对象才能删除这个Item这个项和释放内存。
示例代码:
QStringList strList = { "Item1", "Item2", "Item3", "Item4", "Item5" };
ui->listWidget->addItems(strList);
qDebug() << "111 count == " << ui->listWidget->count();
//Qt中QListWidget中删除item的方法2
QListWidgetItem * listItem = ui->listWidget->takeItem(2);
qDebug() << "111 listItem == " << listItem;
if(listItem )
{
delete listItem;
listItem = nullptr;
}
qDebug() << "222 count == " << ui->listWidget->count();
//Qt中QListWidget中删除item的方法0 //注意:上面删除了一个Item后,删除的Item后面全部Item的index都会发生变化。
QListWidgetItem *pItem = ui->listWidget->item(0);
ui->listWidget->removeItemWidget(pItem);
qDebug() << "333 count == " << ui->listWidget->count();
qDebug() << "111 pItem == " << pItem;
if(pItem )
{
delete pItem;
pItem = nullptr;
}
qDebug() << "444 count == " << ui->listWidget->count();
ui->listWidget->clear();
qDebug() << "555 count == " << ui->listWidget->count();
结果:
参考:Qt QListWidget通过clear()和takeItem(int row)清除列表项_qlistwidget takeitem-CSDN博客
Qt学习之QListWidget删除Item_qt removeitem-CSDN博客
如果深入了解removeItemWidget() 可以参考:QWidgetList删除选中项 - kuikuitage - 博客园 (cnblogs.com)