Здесь представлен свободный открытый проект развития класса QSqlTableModel , который можно скачать на github.com: Fork Sql
Проект реализован из двух частей:
развитие модели данных в виде класса PblSqlRelationalTabelModel и развитие модели представления в виде класса PblTableView.
От обоих классов можно наследоваться стандартным образом. У нас была сначала версия модели данных, которая собиралась как часть исходников самого Qt 4.8.1 с наследованием приватных классов, но она просуществовала только до того момента, когда мы поняли, что весь функционал можно реализовать стандартным наследованием..

Почему Qt 4.8.1 когда на дворе 2022г.? Но что качественно изменилось во фреймворке с 2012г. за 10 лет?... Развитие фреймворка остановилось.
Что останавливает использование Qt сегодня? То, что и вчера и позавчера - огромный объем исходного кода. Выгода Qt становится очевидной только после изучения исходников. Чтобы понять логику и взаимосвязь классов уходят годы. Но кто сказал, что все будет легко и просто...
Что дает новое развитие?
Модель данных PblSqlRelationalTableModel реализует получение более полного набора полей таблицы для удобства манипулирования строками и полями. Добавляются например значения id полей внешних связей.
Можно легко добавлять вычисляемые поля по данным связанных таблиц.
Встроен поиск по колонкам таблицы и отбор по значению конкретного поля таблицы. Есть сортировка по всем типам колонок.
Есть возможность указать выравнивание в ячейках, количество точек после запятой для чисел с плавающей точкой.
Есть возможность встроить выпадающий список в поле, есть вариант чекбокс для поля.
Развитие позволяет работать с всеми тремя стратегиями редактирования, которые можно переключать вручную из PblTableView.
Конфигуртрование
Мы перешли на новую парадигму конфигурирования сьруктуры базы данных.
Идея в простоте. Структура постоянна и следовательно мы можем ее представить в виде static функций, которые для удобства доступа будут еще методами одного глобального класса.
Настройка связей и представления всех таблиц будет производится в одной паре файлов config.h/cpp (конфигурирование базы данных)
Для своего проекта, для своей структуры базы данных вы создаете свою пару config.h/cpp со своими настройками.
Таким образом все конфигурирование базы данных отделено от основного функционала статично и констатно.
Проект тестируется пока только с SQLite3, под Windows, на Qt 4.8.1.
Самая сложная часть это по-видимому Конфигурирование среды и Сборка Qt из исходников.Но без этого не воспользоваться всеми возможностями Qt.