Обновление нескольких QTableView одновременно |
Здравствуйте, гость ( Вход | Регистрация )
Обновление нескольких QTableView одновременно |
Tarigan |
2.7.2012, 10:21
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 11 Регистрация: 20.4.2012 Пользователь №: 3336 Спасибо сказали: 0 раз(а) Репутация: 0 |
Добрый день.
Есть 1 таблица в БД, 2 QSqlTableModel+QTableView и QSqlQuery+QTablEView подключенные к этой таблице.
Как лучше реализовать обновление информации во всех трех моделях при добавлении новой и/или изменении уже имеющейся в 1 или 2? |
|
|
sidsukana |
2.7.2012, 11:15
Сообщение
#2
|
Участник Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: 2 |
Создать слоты в моделях, с которыми соединить сигнал, который вызывать при обновлении?
|
|
|
Tarigan |
2.7.2012, 12:06
Сообщение
#3
|
Студент Группа: Новичок Сообщений: 11 Регистрация: 20.4.2012 Пользователь №: 3336 Спасибо сказали: 0 раз(а) Репутация: 0 |
Спасибо, кэп
Проблема у меня именно в реализации слотов с обновлением. Изначально делал submitAll(), но этот вариант никуда не годится. |
|
|
Tarigan |
3.7.2012, 19:28
Сообщение
#4
|
Студент Группа: Новичок Сообщений: 11 Регистрация: 20.4.2012 Пользователь №: 3336 Спасибо сказали: 0 раз(а) Репутация: 0 |
К примеру, вот:
При добавлении записи в модель 1 срабатывает слот, подключенный к сигналу beforeInsert, в котором значение критерия для выборки в таблицах менятся с 1 на 2. Следовательно запись исчезает из модели 1 и должна появиться в модели 2 (см. 1 пост с описанием моделей). Из модели 1 она действительно исчезает, а в модели 2 появляется только при перезапуске программы. Подключенный к сигналу dataChanged слот ситуацию не спасает:
Что я делаю не так? |
|
|
Гость_Гость_* |
4.7.2012, 17:39
Сообщение
#5
|
Гости |
Какая СУБД? Возможно не происходит коммит в БД на 1 взгляд всё ок.
|
|
|
Tarigan |
4.7.2012, 18:18
Сообщение
#6
|
Студент Группа: Новичок Сообщений: 11 Регистрация: 20.4.2012 Пользователь №: 3336 Спасибо сказали: 0 раз(а) Репутация: 0 |
Firebird 2.5.
Коммит проходит, иначе как после перезапуска приложения данные появляются во второй модели. |
|
|
Гость_Гость_* |
5.7.2012, 9:17
Сообщение
#7
|
Гости |
dataChanged, и не должен вызываться при добавлении записи. beforeInsert - Before == Перед вставкой.
Попробуй ловить layoutChanged, и если не сработает update, делать reset. Хотя если данные в обоих таблица одна и та же 2 sql модели это уг вэй. Вполне достаточно повесить сверху прокси модель, и все проблемы с синхронизацией пропадут сами собой. |
|
|
Текстовая версия | Сейчас: 1.12.2024, 22:06 |