在使用QStandardItemModel
时,可以通过以下两种方式释放它的item:
- 通过调用
QStandardItemModel
中的takeItem()
函数。
takeItem()
函数会从模型中移除指定行、列位置上的item,并将其返回。我们可以将这个item对象手动释放:
QModelIndex index = model->index(row, column);
QStandardItem* item = model->takeItem(row, column);
delete item;
- 直接删除对应的
QStandardItem
对象。
在创建QStandardItem
对象时,我们可以指定一个父对象。当父对象被销毁时,它所拥有的所有子对象也会被自动销毁。因此,在删除某一行或列时,我们可以直接删除其中的QStandardItem
对象,而不需要手动调用takeItem()
函数。
QStandardItem* item = model->item(row, column);
delete item;
需要注意的是,如果某个QStandardItem
对象同时被多个模型引用,那么在使用第二种方式删除它时,需要确保其他的模型不再引用该对象。否则会出现在一个模型中删除了对象,但在另一个模型中该对象仍然存在的情况。