gpt4 book ai didi

c++ - 删除 QListWidgetItem:QListWidget::takeItem(item) vs 删除项目

转载 作者:搜寻专家 更新时间:2023-10-31 00:54:38 25 4
gpt4 key购买 nike

要从 QListWidget* lst 中删除给定的 QListWidgetItem* item,我可以使用以下代码 (taken from this answer):

delete lst->takeItem(lst->row(item)); // method 1

另一方面,如果我只是销毁该项目,它也会从列表中删除(至少它从 QListWidget消失)。

delete item; // method 2

QListWidget documentation指示使用 takeItem 但没有提及任何有关删除项目的信息(QListWidgetItem 也没有任何信息)。

To remove items from the list, use takeItem().

使用方法一(takeItem然后删除)和方法二(直接删除item)有什么区别吗?也许是我遗漏的内存泄漏,未发出的信号等?我的意思是,删除项目(当然,如果你有的话)比搜索它似乎更容易。

最佳答案

以下行来自 docs回答你的问题:

To remove an item (row) from the list entirely, either delete the item or use takeItem().

这意味着拿走项目然后删除它,或者直接删除它没有区别。

takeItem() 只是从项目中删除所有权,这样您就有机会对其进行任何操作(也许在另一个 QListWidget 中使用它)。如果您只想删除该项目,您可以直接删除它,析构函数将负责删除所有权。

关于c++ - 删除 QListWidgetItem:QListWidget::takeItem(item) vs 删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44783228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com