![]() |
|
![]() ![]() ![]() |
|
vlarry |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 16.8.2009 Репутация: нет Всего: нет |
Добрый день, форумчане!У меня есть модель дерева унаследованная от qAbstractItemModel и представление QTreeView. Модель(не редактируемая) заполняется данными из бд. Все работает нормально, только при внесении новых данных в базу приходиться перезапускать программу, чтобы увидеть новые данные. Как можно обновить модель, чтобы данные можно было сразу видеть?Применял reset(), но это не помогает.
|
|||
|
||||
ecspertiza |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 3.11.2008 Где: г.Смоленск Репутация: 4 Всего: 5 |
Собственно можно очистить модель, и заново запустить процедуру заполнения данных из БД
![]() |
|||
|
||||
vlarry |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 16.8.2009 Репутация: нет Всего: нет |
а поподробнее можно? каким образом очистить? Метода clear() у меня нет, т.е. написать свой?
|
|||
|
||||
vlarry |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 16.8.2009 Репутация: нет Всего: нет |
ни у кого нет больше никаких идей? Уже все перепробовал, но пока не нашел способ как это сделать
Добавлено через 4 минуты и 57 секунд не знаю правильно ли, но работает...я при занесении новых данных удаляю модель, а затем снова ее создаю и подсоединяю к вьюхе...работает.... |
|||
|
||||
ecspertiza |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 3.11.2008 Где: г.Смоленск Репутация: 4 Всего: 5 |
поскольку писали модель унаследованную от абстрактной то и метод очистки придется писать свой. ИМХО это будет гораздо более верным решением чем удаление и создание новой модели ![]() |
|||
|
||||
Batbko |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 17.12.2010 Репутация: нет Всего: нет |
Постарайся никогда так не делать. Для начала выдели код загружающий данные в отдельную(ые) функцию(и). Затем добавь к своей модели открытую функцию, а лучше слот с именем типа refresh или upToDate и примерно следующим содержимым:
вроде как всё просто ![]() |
||||
|
|||||
vlarry |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 16.8.2009 Репутация: нет Всего: нет |
спасибо попробую
|
|||
|
||||
vlarry |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 16.8.2009 Репутация: нет Всего: нет |
Batbko, спасибо большое все работает
![]() |
|||
|
||||
vlarry |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 16.8.2009 Репутация: нет Всего: нет |
Все работает, но не до конца так как хотелось
![]() |
|||
|
||||
Batbko |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 17.12.2010 Репутация: нет Всего: нет |
Уверен что до конца данные удаляешь при обновлении ?
|
|||
|
||||
vlarry |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 16.8.2009 Репутация: нет Всего: нет |
я в методе обновления updateModel, вызываю метод setupModelData()...а удалять ничего не удаляю ![]() |
|||
|
||||
Batbko |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 17.12.2010 Репутация: нет Всего: нет |
Покажи код заполнения данными.
Потому что, лично я думаю что у тебя происходит примерно следующее : 1.Загружаешь данные из БД. 2.Или копируешь эти данные в структуры данных в которых дальше их хранишь, или настраиваешь отображение напрямую из запросов. 3.Reset'ишь модель дабы все представления узнали о том, что данные изменились. Так вот, я предположил что ты копируешь эти данные, и не до конца очищаешь их при следующем обновлении. |
|||
|
||||
vlarry |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 16.8.2009 Репутация: нет Всего: нет |
|
|||
|
||||
Batbko |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 17.12.2010 Репутация: нет Всего: нет |
Вот здесь ты конструируешь некий TreeItem который не удаляется до удаления модели,
а должен удаляться во время обновления данных.
Думаю, что если обновить твою модель 3 раза, то деререво будет повторяться 4 раза. |
|||
|
||||
vlarry |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 16.8.2009 Репутация: нет Всего: нет |
этот item верхнего уровня, а к нему уже крепятся дочерние child. А обновлять - это разве что удалять корень. Я написал в методе обновления:
так работает, но будет ли это правильно и еще вопрос, а не будет ли это тормозить, когда в базе будет много записей? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |