crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

eXeLe
  опции профиля:
сообщение 24.8.2012, 12:26
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 1
Регистрация: 24.8.2012
Пользователь №: 3493

Спасибо сказали: 0 раз(а)




Репутация:   0  


собссно возник вопрос.
работаю с базой через запросы
QSqlQuery query;
...

параллельно надо иногда просматривать содержимое базы. вызываю окошко через QSqlTableModel - QTableView, где она отображается.
но все измнения, вносимые через запросы, отображаются только после перезапуска программы.
как исправить?

смотрел в сторону QDataWidgetMapper, но как я понял, оно просто дает работать с тем или иным полем таблицы, а у меня идут запросы в стиле "для строки с таким то имненем, увеличить показатель value на x" или банально добавление новых строк.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 12.12.2012, 17:39
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(FantasyOr @ 12.12.2012, 13:53) *
разве модель не должна отслеживать изменения в вверенной ей таблице и обновлять данные.
нет, если, конечно, ты сам такую модель не напишешь


Цитата(FantasyOr @ 12.12.2012, 13:53) *
по model->select() происходит перерисовка всего представления со следующими пакостями:
известная проблема Qt, которую авторы не собираются исправлять


Цитата(FantasyOr @ 12.12.2012, 13:53) *
подскажите какие есть настройки у модели и представления, позволяющие избежать данных неприятностей.
настроек ни каких, нужно всё самому решать


Цитата(FantasyOr @ 12.12.2012, 17:46) *
есть какие-нибудь рекомендации?
писать свою модель, мониторить изменения, не посылать reset(), а обновлять только изменившиеся данные.
Хлопотно, но если один раз напишешь, то потом можешь этой моделью пользоваться во многих случаях
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 29.1.2013, 19:26
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Цитата(Litkevich Yuriy @ 12.12.2012, 17:39) *
писать свою модель, мониторить изменения, не посылать reset(), а обновлять только изменившиеся данные.
Хлопотно, но если один раз напишешь, то потом можешь этой моделью пользоваться во многих случаях

Вопрос вдогонку: как именно мониторить изменения базы? К примеру в firebird я отсылаю событие и потом в клиенте его ловлю. Но как это сделать для любой базы, средствами Qt? Если ли у Qt свой механизм отслеживания изменений баз?

Как я понимаю QSqlTableModel обновляет сразу всю таблицу, а не частично. И как он вообще понимает что базу пора обновить? Так вот как написать это частичное изменение? По сути пока что у меня проблема как раз в том, как узнать у базы, какие именно строки изменились...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 27.6.2025, 22:13