Russian Qt Forum
Ноябрь 23, 2024, 19:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Обновление одной конкретной строчки в модели  (Прочитано 5774 раз)
stealth
Гость
« : Ноябрь 18, 2007, 18:46 »

Здравствуйте!
Есть QSqlRelationTableModel, есть QTableView.
После некоторых событий в БД происходят изменения (модель при этом вообще не трогается), причем я знаю по какому QModelIndex произошли изменения. Метода, чтобы обновить только конкретную строчку не нашел, пока приходится делать model->select()
Как же всё-таки сделать обновление одной только строчки?
Записан
ритт
Гость
« Ответ #1 : Ноябрь 18, 2007, 22:06 »

поскольку из текста выше не очень понятно, попробую угадать...
берёшь у модели индекс, работаешь с данными этого индекса, изменяешь их и запросом отправляешь изменения в бд...и теперь надо обновить данные этого индекса в модели, не дёргая селект....угадал/нет?

если угадал, то поставь у модели эдитстратеги в мануалсабмит и делай сетДата с этим индексом...или сетРекорд для всей строки, предварительно выбрав рекорд этой же строки
Записан
burunduk
Гость
« Ответ #2 : Ноябрь 19, 2007, 00:37 »

не оно ?
void QAbstractItemView::update ( const QModelIndex & index )

P.S. This function was introduced in Qt 4.3.
Записан
ритт
Гость
« Ответ #3 : Ноябрь 19, 2007, 00:47 »

не так...

void QAbstractItemView::update ( const QModelIndex & index )   [slot]
Updates the area occupied by the given index.
This function was introduced in Qt 4.3.

обновляет пространство, занимаемое индексом во вьюхе
Записан
stealth
Гость
« Ответ #4 : Ноябрь 19, 2007, 20:20 »

Этот update не подходит...

Из модели я получаю индекс, получаю значениt primaryKey, после чего сторонним классом обрабатываю данные в базе с этим примариКеем. Данные в базе соответсвенно в базе изменились, а вот в модели остаются старые, пока не обновлю её select`ом, а надо бы обновить только одну строчку.
Записан
ритт
Гость
« Ответ #5 : Ноябрь 19, 2007, 21:07 »

ммм...http://prog.org.ru/forum/index.php/topic,6502.msg30444.html#msg30444 читал?
должно помочь...
Записан
stealth
Гость
« Ответ #6 : Ноябрь 20, 2007, 18:11 »

читал несколько раз Улыбающийся
не сразу осознал, что это и есть решение, но всё-таки понял, что оно мне подойдет, спасибо Улыбающийся
Записан
stealth
Гость
« Ответ #7 : Ноябрь 20, 2007, 19:31 »

Опять же неясности, а как получить нужный мне QSqlRecord???
Вот код из ассистента
Код:
 QSqlQuery q("select * from employees");
 QSqlRecord rec = q.record();
Получается мне нужно сформировать запрос базе, но т.к. модель моя QSqlRelationTable, какой там она запрос делает мне не выцепить (вроде как должно было помочь selectStatement(), но оно [virtual protected]).
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.072 секунд. Запросов: 20.