Есть модель построенная на основе QAbstractItemModel. Модель используется в QTableView.
Делаю возможность удаления строк из таблицы:
class MyModel: public QAbstractItemModel {
QList< ClientData > clientData;
public:
QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
QModelIndex parent(const QModelIndex &child) const;
bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex());
///... остальные методы
};
QModelIndex MyModel::index(int row, int column, const QModelIndex &parent) const {
qDebug() << "index" << row << column;
return createIndex(row, column);
}
QModelIndex MyModel::parent(const QModelIndex &child) const {
qDebug() << "parent";
return QModelIndex();
}
bool MyModel::removeRows(int row, int count, const QModelIndex &parent) {
qDebug() << "remove rows" << row << count << parent;
beginRemoveRows(parent, row, row+count-1);
qDebug() << "remove from " << row << "to" << (row+count-1);
for(int i=0; i<count; i++) {
clientData.removeAt(row);
}
qDebug() << "end remove";
endRemoveRows();
return true;
}
Записываю в модель одну строку с парой полей. Вызываю
qDebug() << "remove all" << dataModel->rowCount();
dataModel->removeRows(0, dataModel->rowCount());
И в итоге получаю:
remove all 1
remove rows 0 1 QModelIndex(-1,-1,0x0,QObject(0x0) )
parent
parent
parent
parent И все заканчивается GPF'ом.
Куда копать? Что я делаю неправильно?