Название: [qt4.3.1] Обновление при изменениях в QTreeView+MyModel Отправлено: Icoz от Сентябрь 06, 2007, 15:44 Пробслема следующая.
Модель пишу сам: Код: class NotesModel : public QAbstractItemModel Код: void NotesModel::AddNote(QString name, Note *parent, QString content) Вот так я получаю указатель на свою структуру: Код: Note* NotesModel::noteFromIndex(const QModelIndex &index) const Как мне получше написать, чтобы не обновлять все дерево(reset), а только часть(emit dataChanged)? Либо как запомнить, какие ветки были свернуты/развернуты, чтобы потом восстановить состояние? Название: Re: [qt4.3.1] Обновление при изменениях в QTreeView+MyModel Отправлено: denka от Сентябрь 06, 2007, 16:13 А ты смотрел пример из ассистента simpletreemodel? Там как раз используеться иерархическая модель. Если посмотреш реализацию ф-ции index то должен все понять :).
Сворачивать и разворачивать это за тебя сделает QTreeView, если модель написано правильно... Ну это на скока я помню :) Название: Re: [qt4.3.1] Обновление при изменениях в QTreeView+MyModel Отправлено: Icoz от Сентябрь 07, 2007, 13:23 ну по большей части я оттуда куски кода и подергал...
У меня другой вопрос. Как правильно задавать эти индексы для обновления. Там же передаются левый-верхний и правый-нижний индексы. При создании индекса передаются значения строки, колонки и указателя. Колонка у меня всего одна. У меня есть указатель на итем моей структуры. Если я обновляю индекс родительского итема, то у меня просто отрисовывается продолжение линии (ну той, на которой еще плюсики есть. Она показывает иерархию.), а ниже лежащие итемы ниже не сдвигаются. Пробовал сделать левый-верхний = парент итема, правый-нижний = следующий сосед парента итема, но тогда прога падает с фразой, что что-то там криво у QList::size(). Какие мысли? ЗЫ. В этом примере нет setData! А у меня модель редактируеммая. Проблема возникает при добавлении элемента. Название: Re: [qt4.3.1] Обновление при изменениях в QTreeView+MyModel Отправлено: Icoz от Сентябрь 07, 2007, 14:23 Еще вопрос: setData может работать не только на обновление данных, но и на добавление/удаление/перемещение? Или это только при помощи UserRole делается?
Название: Re: [qt4.3.1] Обновление при изменениях в QTreeView+MyModel Отправлено: denka от Сентябрь 07, 2007, 14:37 Добавление и удаление элементов делаеться с помощью ф-ций insertRow, insertRows, insertColumn, insertColumns и группы ф-ций remove. А setData на сколько я понимаю MVC тролей только для обновления. Я сразу не понял о чем ты :). У себя я делал только не редактируемую иерархическую модель.
Название: Re: [qt4.3.1] Обновление при изменениях в QTreeView+MyModel Отправлено: Icoz от Сентябрь 07, 2007, 14:41 Проблема решена.
Решение простое. Надо было всего лишь вставить в нужные места: beginInsertRows/endInsertRows и beginRemoveRows/endRemoveRows |