January 8th, 2010

харёк

Обновление Qt relation

Часто задают один вопрос, решил его раскрыть в блоге...

Дано:
2 таблицы: "table_main" и "table_rel" со связью по внешнему ключу. Связь идёт через "field_id" первой таблицы к "field" второй таблицы, через её "id" (в кавычках - поля).
На Qt 4 выглядит так:
QSqlRelationalTableModel *model = new QSqlRelationalTableModel;
model->setTable("table_main");
model->setRelation(model->fieldIndex("field_id"),QSqlRelation("table_rel","id","field"));

Классический вариант реляции на Qt 4.

Если обновилась основная таблица - перечитать легко и это есть в доках Qt:
model->select();
Но не всем очевидно (и в доках кстати про это ничего не видел...), что таким образом будут обновлены данные только основной таблицы - нужно обновить ещё и связанные:
model->relationModel(model->fieldIndex("field"))->select();