При изменении базовых данных вы должны использовать механизм уведомлений модели для уведомления представлений.Например, при добавлении данных:
beginInsertRows(QModelIndex(), preset_list.size(), preset_list.size()+1); //notify that two rows will be appended (rows size() and size() + 1)
preset_list.append(something);
preset_list.append(somethingelse);
endInsertRows(); //notify views that you're done with modifying the underlying data
Соответственно, вы должны вызывать beginRemoveRows () и endRemoveRows () при удалении строк и вызывать dataChanged () при обновлении существующих записей.
Вклпримечание: ваш метод rowCount () должен иметь значение
if (!parent.isValid())
return preset_list.size(); //top-level: return list size
else
return 0; //list item: no further children (flat list)
, чтобы ограничить глубину.В противном случае каждый элемент в списке снова содержит записи preset_list.size ().