QTreeView & QAbstractItemModel & insertRow

Я пытаюсь реализовать 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 ()), и он полностью прокомментирован - я в отчаянии, и я пытался найти причину этой проблемы ... (на самом деле он ничего не удалял - он добавляет новый элемент ).

Спасибо за любую помощь и совет!

5
задан Lukasz Spas 5 July 2011 в 17:26
поделиться