如何删除 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]);
也可以使用
【讨论】:
来自 QttakeItem
文档:“从列表小部件中删除的项目不会由 Qt 管理,需要手动删除。”所以你应该说delete widget->takeItem(...);
【参考方案3】:
ui->listWidget->clear(); 会做asof qt5
【讨论】:
你能解释一下吗? ui->listWidget->clear();将清除列表小部件中的所有先前条目 在 Qt5 QListWidget::clear() 方法可以正常工作,因为@dravgon 说:-)以上是关于如何删除 QListWidget 中的所有选定项目?的主要内容,如果未能解决你的问题,请参考以下文章
Qt - 如何从 QListWidget 中获取选定的自定义项目?
如何将所选项目从 QListWidget、QTableWidget 保存到 Qsettings
如何隐藏 Qt QListView 或 QListWidget 中的选择矩形/虚线?