Помогите, пожалуйста, разобраться в правильной эксплуатации модели-посредника.
Использую модель-посредник QSortFilterProxyModel для фильтрации строк одной из таблиц. Все остальные таблицы в фильтрации не нуждаются и управляются моделью QSqlRelationalTableModel.
Логика работы организована так:
QSortFilterProxyModel *proxy;
QSqlRelationalTableModel *model;
MyView *view;
// в конструкторе
view = new MyView
// в методе открытии документа
model = new QSqlRelationalTableModel(this);
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
proxy = new QSortFilterProxyModel(this);
proxy->setSourceModel(model);
// при выборе таблицы для работы (редактирования)
// для всех таблиц (кроме одной)
view->setModel(model);
// для одной
view->setModel(proxy);
// в методе сохранения действую так:
QSqlTableModel *md = qobject_cast<QSqlTableModel*>(model()); // вот здесь то и проблема
md->database().transaction();
// ...
Поблема такая: md для таблиц работающих с model не пустое (правильное), а вот для одной таблицы, работающий с proxy --- md=0.
Как правильно заполучить в md модель-посредник? или, может быть здесь д.б. настоящая модель, ведь ничего же не фильтруется при сохранении. Тогда, как правильно заполучить модель?