стратегии редактирования

Стратегии редактирования введены в классе QSqlTableModel.

Итак поведение модели данных четко разделяется на три стратегии редактирования, которые надо учитывать.

При OnFieldChange модель данных при изменении поля делает как обычно setData , потом сразу записывает в базу данных через функцию updateRowInTable и потом делает новый  запрос select к таблице.

Стратегия OnRowChange похожа на OnFieldChange, редактирование происходит на внутреннем буфере editBuffer (это обычный QSqlRecord). И только при переходе к редактированию другой строки происходит сначала запись предыдущей строки в базу данных. Можно также ускорить процесс вызова записи вызвав функцию submit.

Третий вариант стратегии редактирования OnManualSubmit особенный. Тут все изменения накапливаются в кеше , контейнер cache. И только явный вызов функции submitAll инициализирует процесс записи в базу данных.

Все модели данных вызывают в результате функции updateRowInTable, insertRowIntoTable , на вход которым передается QSqlRecord.

В QSqlRecord присутствуют все поля таблицы, но только помеченные generated=true, будут записываться в базу данных.

Скачать наше развитие модель-представление библиотеки Qt, где все это уже реализовано, можно здесь скачать sql развитие модель-представление.