Я пытаюсь реализовать QAbstractItemModel для QTreeView. У меня проблема со вставкой строк. Я заметил, что если я вставляю в начало своего приложения, все работает нормально. Но если я вставлю строки позже - после некоторых других операций (например, выделения и т. Д.) Новые элементы останутся невидимыми. Более того, QTreeView, похоже, вообще не работает! Нужно ли мне подавать какие-то сигналы, чтобы уведомить QTreeView о вставке строк?
Это мой метод вставки:
bool LayersModel::insertRows(int position, int count, const QModelIndex & parent)
{
LayersModelItem * parentItem = getItem(parent);
if (position > parentItem->childCount())
return false;
beginInsertRows(parent,position,position+count-1);
bool result = true;
for (;count;--count)
result &= parentItem->insertChildren(position, new LayersModelItem());
endInsertRows();
return result;
}
LayersModelItem - это класс с QList с его дочерними элементами и данными.
Полный код моего проекта (необходимы библиотеки KDE) здесь: https://github.com/coder89/PhotoFramesEditor/tree/v0.0.8 Чтобы увидеть проблему, выберите один из синих элементов в главном окне, затем щелкните его правой кнопкой мыши и выберите «Удалить элемент». (этот метод находится в Canvas :: removeItems ()), и он полностью прокомментирован - я в отчаянии, и я пытался найти причину этой проблемы ... (на самом деле он ничего не удалял - он добавляет новый элемент ).
Спасибо за любую помощь и совет!