删除 QListWidgetItem: QListWidget::takeItem(item) 与删除项目

2024-01-01

删除给定的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(使用前将#替换为@)

删除 QListWidgetItem: QListWidget::takeItem(item) 与删除项目 的相关文章

随机推荐