Qt QListWidget clear()、takeItem()、removeItemWidget()删除项

2023-12-21 12:55:53

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)

文章来源:https://blog.csdn.net/m0_63893772/article/details/135126827
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。