Russian Qt Forum

Qt => Model-View (MV) => Тема начата: zdarovo от Февраль 15, 2010, 19:44



Название: QSortFilterProxyModel QTreeView и добавление дочерних элементов
Отправлено: zdarovo от Февраль 15, 2010, 19:44
Есть кастомный виджет типа QTreeView. В качестве основной модели задаю родную QSortFilterProxyModel модель, а также кастомная модель QAbstractItemModel.
Добавляю корневые элементы таким образом

Код:
        beginInsertRows(QModelIndex(),getRowsCount(), getRowsCount());
        listItems<<block;
        endInsertRows();

Все замечательно, так как для у них отсутствует родительский индекс и его достаточно обозначить как QModelIndex(). К слову говоря отладчик показал, что обработкой beginInsertRow занимается именно модель QSortFilterProxyModel.
Затем я хочу добавеить каждому элементу несколько дочерних таким же образом, но тут возникает вопрос, а каким же образом задавать родительский индекс.
Если я его задам как createIndex(row,0,&block), то результата не никакого. Модель видимо просто не понимает такой индекс.
Если я его задаю как sortModel->index(row,0,QModelIndex()), все проходит замечательно но выдает ругательства в виде "QSortFilterProxyModel: index from wrong model passed to mapFromSource". Т.е. он не может привести индекс к своему виду, так как он уже к нему приведен.

Собсно, вопрос. А как же задавать в такой ситуации индексы? emit layoutChanged() не предлагать.
Спасибо.