Основная идея форка

Здесь представлен свободный открытый проект развития класса QSqlTableModel , который можно скачать на github.com: Fork Sql

Проект реализован из двух частей:
развитие модели данных в виде класса PblSqlRelationalTabelModel и развитие модели представления в виде класса PblTableView.

От обоих классов можно наследоваться стандартным образом. У нас была сначала версия модели данных, которая собиралась как часть исходников самого Qt 4.8.1 с наследованием приватных классов, но она  просуществовала только до того момента, когда мы поняли, что весь функционал можно реализовать стандартным наследованием..

 

фотка 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.