我的源代碼↓如何移除Qtablewidget中的Item?
ui->tableWidget->setItem(0,7,new QTableWidgetItem(QString::number(3)));
ui->tableWidget->item(0,7)->setTextAlignment(Qt::AlignCenter);
我的方法:
刪除UI-> tableWidget->項(0,7);
如果此內存是免費的?
如果沒有,讓我知道任何其他方法。
我的源代碼↓如何移除Qtablewidget中的Item?
ui->tableWidget->setItem(0,7,new QTableWidgetItem(QString::number(3)));
ui->tableWidget->item(0,7)->setTextAlignment(Qt::AlignCenter);
我的方法:
刪除UI-> tableWidget->項(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);
中的上述代碼將不會被調用。
我的Qt版本4.8 ...不能使用 –
好嗎? QTableWidgetItem析構函數代碼在Qt版本的qtablewidget.cpp文件中看起來是否有所不同? –
查看http://doc.qt.io/qt-4.8/qtablewidget.html#takeItem – Danh
刪除項目工作得很好。如果你想在不刪除的情況下刪除該項目,那麼takeItem()很有用(否則它會泄漏)。 –