删除给定的QListWidgetItem* item
from a QListWidget* lst
我可以使用以下代码(摘自这个答案 https://stackoverflow.com/a/25418363/1485885):
delete lst->takeItem(lst->row(item)); // method 1
另一方面,如果我只是销毁该项目,它也会从列表中删除(至少它消失来自QListWidget
).
delete item; // method 2
QListWidget文档 https://doc.qt.io/qt-5/qlistwidget.html#details表示使用takeItem
但没有提及任何有关删除该项目的内容(QListWidgetItem
也没有任何信息)。
要从列表中删除项目,请使用 takeItem()。
使用方法1(takeItem
然后删除)和方法2(直接删除该项目)?也许我错过了内存泄漏,未发出信号等?我的意思是,删除该项目(当然,如果您有的话)似乎比搜索它更容易。
以下行来自docs https://doc.qt.io/qt-5/qlistwidget.html#removeItemWidget回答你的问题:
要从列表中完全删除项目(行),either删除该项目or use takeItem()
.
这意味着获取该项目然后删除它与直接删除它没有区别。
takeItem()
只是删除该项目的所有权,以便您有机会对其执行任何操作(也许可以在另一个项目中使用它)QListWidget
)。如果您只想删除该项目,则只需删除它即可,析构函数将负责删除所有权。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)