我removeRows()
根据文档实现了该方法。我的数据存储在 QList 中。我可以使用以下方法很好地删除项目:
bool MeasurementManager::removeRows(int row, int count, const QModelIndex &m) {
if(count > 1) {
qDebug() << "MeasurementManager: cannot remove more than one measurement";
return false;
}
beginRemoveRows(QModelIndex(), row, row+count-1);
list.removeAt(row);
endRemoveRows();
return true
}
但是,当删除最后一项时,我在执行时收到以下错误消息beginRemoveRows()
:
ASSERT failure in QList<T>::at: "index out of range"
移除最后一项(导致崩溃)时,它显然必须位于第 0 行,但只要模型中有其他项目,我就可以毫无问题地移除第 0 行中的项目。
如果我像这样注释掉我的数据的实际删除
beginRemoveRows(QModelIndex(), row, row+count-1);
//list.removeAt(row);
endRemoveRows();
没有发生崩溃,所以我假设它在删除后尝试访问列表的元素之一。但是,当逐步执行该功能时,该beginRemoveRows()
方法显然是罪魁祸首。
任何从哪里开始调试的帮助将不胜感激!