У меня реализована своя модель, унаследованная от QAbstractItemModel. В QModelIndex я храню не только row и column, но и указатель на объект, к которому относится этот индекс. Если объект удалить, то индекс будет содержать в себе ссылку на удаленный объект и я с этим ничего поделать не могу, так как индексы принадлежат не мне.
Проблема возникает вот в такой ситуации. Есть дерево вида:
A
B
+B1
+B2
+B3
Надо удалить B. Вызываем сначала beginRemoveRows(), потом delete для объекта B, потом endRemoveRows(). Деструктор объекта B уничтожает B1, B2, B3. Потом приложение падает в месте, где QTreeView пытается узнать у модели parent(const QModelIndex &child) для индекса B3. Естественно объекты B3 и B уже мертвы а их индексы должны быть битыми.
Как с этим бороться?