Russian Qt Forum

Qt => Базы данных => Тема начата: tacacs от Сентябрь 12, 2007, 16:48



Название: И снова периодическое обновление QTableView
Отправлено: tacacs от Сентябрь 12, 2007, 16:48
Привет всем.

Клепаю приложение для мониторинга логов. Логи сохраняются
в базе (Postgres). Создаю модель, порожденную от QSqlQueryModel
и связываю ее с QTableView. Все работает замечательно, логи
подгружаются по мере просмотра, памяти много не жрет, хорошо...

Записи в логе, естественно, периодически добавляются, добавляет
их другая программа. Мониторная программа, по замыслу, должна
работать сутками, т.е. все изменения в логе должны отображаться
по мере возникновения.

Проблема в том, что записей много, вариант периодического выполнения

model->setQuery(...); view->setModel(model);

не проканывает, ибо медленно, даже если период сделать полминуты,
раз в полминуты программа секунд на 5 встает колом, а это неправильно.

Пробовал вариант периодического выполнения

model->query()->exec();

Работает побыстрее (хотя все равно видно, что тормозит), но
визуальное обновление во вьюшке происходит только под Linux,
в Венде же ничего не обновляется, а надо чтобы работало одинаково.

Отказываться от QSqlQueryModel и разрабатывать модель на базе QAbstract...
не хочется, так как очень спасает механизм динамической подгрузки записей
в QSqlQueryModel, самому писать такое лень, да и времени мало.

Использую Qt 4.2.3

Всем заранее спасибо