Russian Qt Forum
Июнь 16, 2024, 07:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сохранение состояния представления, во вl  (Прочитано 2806 раз)
daenux
Гость
« : Декабрь 18, 2010, 20:52 »

Здравствуйте дамы и господа!

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

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

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

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

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

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

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

reset();
}

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

Скажите пожалуйста, как их использовать?
« Последнее редактирование: Декабрь 18, 2010, 20:54 от daenux » Записан
UVV
Гость
« Ответ #1 : Декабрь 19, 2010, 08:18 »

Реализовать добавление/удаление элементов в модель через beginInsertRows(), endInsertRows() / beginRemoveRows(), endRemoveRows().
Если без ресета никак, то только запоминать так, как ты уже предложил (кода на самом деле не много получится).
Записан
daenux
Гость
« Ответ #2 : Декабрь 19, 2010, 08:38 »

Значит мне нужно руководствоваться примером: "Editable Tree Model Example", и тогла ведъ и reset()'а нужно не будет...

А обновлять с помощью переопределенных функции, как в примере - верно?
Записан
UVV
Гость
« Ответ #3 : Декабрь 20, 2010, 15:39 »

Да, можно функции переопределить, можно свои сделать, главное в обоих вариантах использовать beginInsertRows/endInsertRows.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 17.