Russian Qt Forum

Qt => Model-View (MV) => Тема начата: daenux от Декабрь 18, 2010, 20:52



Название: Сохранение состояния представления, во вl
Отправлено: daenux от Декабрь 18, 2010, 20:52
Здравствуйте дамы и господа!

У нас есть модель, унаследованная от QAbstractItemModel для представления иерархической информации в QTreeView.

Проблема заключаеться в том, что когда модель обновляеться и мы пожаем комманду reset(), то представление закрывает все раскрытые ранее элементы и соответственно теряються выделенные элементы...

Как поступить так, что бы при обновлении модели - представление сохранило раскрытые и выделенные элементы (в случае если подобные в модели остались, после ее обновления).

Конечно же в контейнер пихать раскрытые и выделенные эллементы, и затем - после обновления сново их раскрывать и выделять вручную так сказать не охото...

Быть может мы неверно подаем какие либо сигналы, либо вообще их не подаем?

В общих чертах, функция обновления выглядит следующем образом:

Код:
{
// Обновление

reset();
}

Наверное все же как то нужно предупреждать представление заранее, это случайно не beginResetModel() и endResetModel()?

Скажите пожалуйста, как их использовать?


Название: Re: Сохранение состояния представления, во вl
Отправлено: UVV от Декабрь 19, 2010, 08:18
Реализовать добавление/удаление элементов в модель через beginInsertRows(), endInsertRows() / beginRemoveRows(), endRemoveRows().
Если без ресета никак, то только запоминать так, как ты уже предложил (кода на самом деле не много получится).


Название: Re: Сохранение состояния представления, во вl
Отправлено: daenux от Декабрь 19, 2010, 08:38
Значит мне нужно руководствоваться примером: "Editable Tree Model Example", и тогла ведъ и reset()'а нужно не будет...

А обновлять с помощью переопределенных функции, как в примере - верно?


Название: Re: Сохранение состояния представления, во вl
Отправлено: UVV от Декабрь 20, 2010, 15:39
Да, можно функции переопределить, можно свои сделать, главное в обоих вариантах использовать beginInsertRows/endInsertRows.