如何删除 QListWidget 中的所有选定项目?

Posted

技术标签:

【中文标题】如何删除 QListWidget 中的所有选定项目?【英文标题】:How do I remove all the selected items in a QListWidget? 【发布时间】:2011-08-10 09:15:13 【问题描述】:

QListWidget::selectedItems 返回 QListWidgetItem 的列表,但我找到的唯一用于删除项目的函数是 takeItem,它只接受索引,并且 selectedIndexes 函数是受保护的。

【问题讨论】:

【参考方案1】:

试试

qDeleteAll(listWidget->selectedItems());

【讨论】:

这似乎可行,但从帮助看来 qDeleteAll 只是一个通用函数,它在一系列对象上调用 delete 。 QListWidget 不会仍然认为它有这些项目吗? 我发现 this link 解释了它为什么起作用 - QListWidgetItem 的析构函数将它从 QListWidget 中删除。感谢您的回答!【参考方案2】:

遍历 SelectedItemsList:

QList<QListWidgetItem *> itemList = widget->selectedItems();
for (int i=0; i<itemList.size(); i++) 
     widget->takeItem(widget->indexFromItem(itemList[i]));

我认为

widget->removeItemWidget(itemList[i]);

也可以使用

【讨论】:

来自 Qt takeItem 文档:“从列表小部件中删除的项目不会由 Qt 管理,需要手动删除。”所以你应该说delete widget-&gt;takeItem(...);【参考方案3】:

ui->listWidget->clear(); 会做asof qt5

【讨论】:

你能解释一下吗? ui->listWidget->clear();将清除列表小部件中的所有先前条目 在 Qt5 QListWidget::clear() 方法可以正常工作,因为@dravgon 说:-)

以上是关于如何删除 QListWidget 中的所有选定项目?的主要内容,如果未能解决你的问题,请参考以下文章

Qt - 如何从 QListWidget 中获取选定的自定义项目?

如何将所选项目从 QListWidget、QTableWidget 保存到 Qsettings

如何隐藏 Qt QListView 或 QListWidget 中的选择矩形/虚线?

如何从 QListWidget 中删除 QListWidget 项

如何在 QListWidget 中将项目列为组

从PyQt5中的QListWidget中删除项目