собсно везде где есть примеры, там добавление и удаление элементов завернуто в
BeginInsert/Remove()
//addChild
//delete
EndInsert/Remove()
так делать конечно не получается, потому что я сам лично не слежу за добавлением и удалением. Данные сами приходят и уходят.
Я пробовал вот так:
BeginInsert/Remove()
EndInsert/Remove()
//addChild
//delete
как поняли, вначале обновил индексы, а затем обновил содержимое. Вроде все работает. Но нет. а вернее не всегда.
Бывают такие случаи, когда:
вначале вызываются
BeginInsert/Remove()
EndInsert/Remove()
индексы почистятся, но потом не доходя до обновления содержимого, срабатывает делегат viewшки, он вызывает rowCount(), который видит что данные еще есть. дальше кастует индекст к элементу модели, которого нет, и затем падает.
Хах.
Допустим есть метод update()
{
в нем я запросил актуальные данные
затем сравнил с данными которые у меня есть.
послал сигнал который говорит beginInsertRow() //но не завершает
дальше в цикле добавляю новые айтемы
затем хочу послать сигнал на завершение endInsertRow();
}
первая итерация прошла успешно, но когда доходит до beginInsertRow()
в какой то другой раз, на нем и останавливается вся программа .. и ... вылетает