У меня есть QMainWindow
с двумя QTableViews
на нем. Каждый QTableView
имеет свой собственный QSqlRelationalTableModel
. В качестве стратегии редактирования для обеих моделей я использую OnManualSubmit
. Обе модели попадают в одну и ту же базу данных и заполняются с использованием setTable
(каждый раз попадает в другую таблицу), а затем select()
.QTableView не обновляет внешние ключи?
Модель для второй таблицы настроена с соответствующими вызовами setRelation
, чтобы связать ее с таблицей, используемой для заполнения первой модели. На втором (дочернем) представлении я звоню view->setItemDelegate(new QSqlRelationalDelegate(view));
Все кажется отличным: данные, отображаемые в первом представлении, перечислены в раскрывающемся списке в соответствующем поле второго представления.
Моя проблема: когда я добавляю, редактирую или удаляю запись в первый (родительский) вид и сохраняю ее в базе данных, как мне обновить второе представление, чтобы выпадающее меню было точным?
Во втором (дочернем) представлении могут быть несохраненные изменения, и я не хочу их потерять, и я еще не хочу их сохранять. Я просто хочу, чтобы раскрывающийся список был обновлен соответствующим образом.
Я пробовал child_model->relationModel(fk_col)->select();
, и это работает, но child_model->relationModel(fk_col)->columnCount();
указывает, что выбор работает во всех полях родительской таблицы, что кажется ненужным пессимизацией.
Это моя первая попытка использовать <QtSql>
и QTableView
, так что, возможно, мне не хватает чего-то фундаментального. Может быть, есть способ использовать одну и ту же модель для обоих представлений, и обновление происходит автоматически? Каким образом можно обновить раскрывающийся список детского просмотра?