gpt4 book ai didi

c++ - 如何删除Qtablewidget中的Item?

转载 作者:行者123 更新时间:2023-11-28 00:08:19 29 4
gpt4 key购买 nike

我的源码↓

ui->tableWidget->setItem(0,7,new QTableWidgetItem(QString::number(3)));
ui->tableWidget->item(0,7)->setTextAlignment(Qt::AlignCenter);

我的方法:

删除ui->tableWidget->item(0,7);

如果这段内存是空闲的?

如果没有,让我知道任何其他方法。

最佳答案

调用 setItem(...)QTableWidgetItem 的所有权传递给 QTableWidget

尽管 QTableWidgetItem 不是 QObject,但它确实会通知 QTableWidget 关于它的删除(来自 qtablewidget.cpp,Qt 5.1 .1):

QTableWidgetItem::~QTableWidgetItem()
{
if (QTableModel *model = (view ? qobject_cast<QTableModel*>(view->model()) : 0))
model->removeItem(this);
view = 0;
delete d;
}

takeItem() 将项目的 View 设置为 null,将所有权释放给调用者。因此,项目的析构函数 model->removeItem(this); 中的上述代码将不会被调用。

这意味着您需要手动删除QTableWidgetItem
但是在删除项目之前是否调用takeItem(...) 并不重要

另见 Remove QListWidgetItem: QListWidget::takeItem(item) vs delete item .

关于c++ - 如何删除Qtablewidget中的Item?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34281624/

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