Диалог создает еще одну копию своего же класса и хранит у себя же в мембере ui, зачем?
2. Очень странная обработка ошибок — местами есть, местами нет. И никаких действий при этом.
Тем более работа с БД ведется в конструкторе — а если произойдет сбой при создании формы?
Отличная идея, задавать уточняющие вопросы через неделю =)
Много чего может произойти в реальном мире. По коду:
1) Данные из БД не загрузились. Программа была открыта 3 дня и коннект к серверу умер.
Или мастер-детайл не соответствует старым данным — удалили на соседнем рабочем месте.
2) Данные не проходят валидацию. Я понимаю, что пока в этом примере ее нет, но будет же когда нибудь!
Итого — объект формы создан (QT же не выбрасывает таких исключений), а содержимое формы «левое». Нажимаем ОК.
Каждому полю на форме нужно вручную добавлять свойство с заданным именем?
Мы в подобной ситуации создали плагин с наследниками компонент, чтобы они содержали в себе нужные свойства, плюс доработали его так, чтобы можно было массово задавать имя таблицы дочерним компонентам.
Меня хватило только на разделы «История» и «Обзор кода».
Дальше просто пробежал глазами, потому что фотографий кота больше, чем полезной информации. Зачем злоупотреблять? Хабр не Пикабу.
Иногда можно потратить часы на исследование чужого кода. Там всякое можно увидеть. А вы не захотели даже понять описанное решение среди плохих иллюстраций. Наверное не очень то и хотелось.
У вас просто не хватит терпения на код… Можете смело закрыть статью и забыть.
Очень много работал со всеми этими моделями и делегатами для таблиц и немного для форм. И хотел бы даже написать об этом.
В целом, работает 50\50. Надо «плясать с бубном». Этим пляскам и была посвящена часть про «QDataMapper».
Автоматизация обмена данными Qt форм с SQL базой данных