如何删除Qtablewidget中的Item?

how to remove Item in Qtablewidget?

我的源码↓

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

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

另见