Название: Обновление модели и представления Отправлено: Larry от Январь 26, 2011, 12:29 Добрый день, форумчане!У меня есть модель дерева унаследованная от qAbstractItemModel и представление QTreeView. Модель заполняется данными из бд. Все работает нормально, только при внесении новых данных в базу приходиться перезапускать программу, чтобы увидеть новые данные. Как можно обновить модель, чтобы данные можно было сразу видеть?
Название: Re: Обновление модели и представления Отправлено: UVV от Январь 26, 2011, 13:04 QAbstractItemModel::reset()
Название: Re: Обновление модели и представления Отправлено: Larry от Январь 26, 2011, 13:06 извините за тупой вопрос ;D, а ее тоже переопределить надо?
Название: Re: Обновление модели и представления Отправлено: BRE от Январь 26, 2011, 13:08 Нужно разобраться с моделями и правильно добавлять данные.
Название: Re: Обновление модели и представления Отправлено: UVV от Январь 26, 2011, 13:45 Нужно разобраться с моделями и правильно добавлять данные. Тут немного сложнее ему будет, вероятно.В этом случае ему нужно ловить событие БД о добавлении данных. Название: Re: Обновление модели и представления Отправлено: Larry от Январь 26, 2011, 13:50 я с базой работаю через QSqlTableModel...т.е. мне надо подключить сигнал отправленный базой на слот где происходит обновление? А reset() надо переопределить?
Название: Re: Обновление модели и представления Отправлено: UVV от Январь 26, 2011, 14:33 Тут BRE правильно сказал, если есть возможность нужно сделать добавление данных в модель при помощи beginInsertRows()/endInsertRows() (Переопределять их не нужно, их нужно использовать внутри модели). Другой вопрос, если у тебя уже есть QSqlTableModel, то зачем ты сделал ещё одну модель?
Насчёт reset'a, переопределять его не надо. Сделай метод в своей модели, который будет вызывать reset. Название: Re: Обновление модели и представления Отправлено: Larry от Январь 26, 2011, 15:00 я использую QSqlTableModel для доступа к базе и извлечении данных(мне так удобнее)...Добавление данных в базу произвожу не через модель, а через отдельную форму(диалоговое окно)...определил метод и вызвал там reset(), это ни к чему не привело....что можно еще сделать?
Название: Re: Обновление модели и представления Отправлено: Larry от Январь 26, 2011, 18:20 ни у кого нет никаких идей? Уже все перепробовал, но пока не нашел способ как это сделать >:(
Название: Re: Обновление модели и представления Отправлено: twp от Январь 26, 2011, 18:25 Ну так понятно что reset не поможет, новые данные попадают напрямую в базу минуя модель. Нужно опять произвести выборку данных из базы, что не есть гуд, В общем сама схема работы неправильна, а это уже все костыли
Название: Re: Обновление модели и представления Отправлено: Larry от Январь 26, 2011, 18:27 знаю что не правильно, но работает...я при занесении новых данных удаляю модель, а затем снова ее создаю и подсоединяю к вьюхе...работает....а по другому наверное и нельзя?!!
Название: Re: Обновление модели и представления Отправлено: kolob от Сентябрь 28, 2012, 22:59 Цитировать а по другому наверное и нельзя?!! Так ни кто и не ответил на этот вопрос? Ни кто походу не делает обновление или очистку модели.Мне вот тоже приходится каждый раз модель заново создавать после добавления, редактирования и удаления. Хотелось бы узнать хоть какое нибудь решение. ??? Название: Re: Обновление модели и представления Отправлено: kambala от Сентябрь 28, 2012, 23:10 я делаю полное обновление табличной модели (таблица 10х10, не БД) так:
Код
Название: Re: Обновление модели и представления Отправлено: andrew.k от Сентябрь 28, 2012, 23:36 Я делал так. В БД поставил триггер на добавление/обновление/удаление данных в нужную таблицу.
Этот триггер отправлял нотифай. В модели его ловил и обрабатывал. А удалять модель потом создавать заново и все коннектить по новой это капец. Получается, что после каждого изменения в таблице, ты ее полностью заново загружаешь в модель? А если там будут сотни тысяч строк? Название: Re: Обновление модели и представления Отправлено: trot от Сентябрь 29, 2012, 07:34 Цитировать Этот триггер отправлял нотифай. В модели его ловил и обрабатывал. А можно поподробней. Как отправляется нотифай и как его ловить в модели. Название: Re: Обновление модели и представления Отправлено: andrew.k от Сентябрь 29, 2012, 11:30 Цитировать Этот триггер отправлял нотифай. В модели его ловил и обрабатывал. А можно поподробней. Как отправляется нотифай и как его ловить в модели. NOTIFY (http://www.postgresql.org/docs/9.0/static/sql-notify.html) Подписываемся на нотифай: subscribeToNotification (http://doc.qt.digia.com/4.7-snapshot/qsqldriver.html#subscribeToNotification) Сигнал: Код
|