QAbstractItemModel: что делать, если при удалении у всех братьев/сестёр меняется internalPointer?
Есть кэш, задача которого — вывести некий срез данных в QTreeView. В каждом элементе — динамический массив сыновей. Не указателей, а самих сыновей.
QModelIndex содержит internalPointer’ом указатель на элемент.
Один из элементов приходится удалять. В таком случае мы запускаем beginRemoveRows(), уничтожаем элемент, endRemoveRows(). Вылет. Если делать beginResetModel/endResetModel — всё в порядке. Видимо, это связано с тем, что у индексов-братьев и сестёр заодно меняется internalPointer.
Что делать?
(Раньше живые данные были объединены с кэшем, в каждом элементе — динамический массив указателей, всё работало. Потребовалось разделить — нужны хитрые срезы наподобие классификации товаров.)
UPD. Большую часть проблем разрешил, осталось одно: есть же выделенный объект — как преобразовать индекс?
Лично я в таких непонятных случаях собираю нужную библиотеку qt c выводом отладочной информацией в консоль и запускаю проект с ней. Вывод я вставляю в функции - потенциальные места появления ошибок. Да, это геморно очень. Есть еще вариант - попробовать внести нужный модуль qt в код в виде исходников, потом просто отладчиком смотреть что там происходит, но я никогда этого не делала, не могу ручаться что оно 100 процентов будет собираться в таком виде.