Совместимость QSqlRelationalTableModel и PblSqlRelationalTableModel

Сначала выясним, что общего в классах PblSqlRelationalTableModel и QSqlRelationalTableModel.

Функции updateRowInTable и insertRowIntoTable просто используют аналогичные функции из QSqlTableModel с небольшим нюансом, они сначала  возвращают оригинальные наименования колонок.

Так как в selectStatement  через оператор as наименования полей могут переопределяться, а в случае с полями внешних связей скорее  всего так и будет. Это делается, чтобы не словить дубли в названиях полей.

Роль члена класса  QHash relations (QSqlRelationalTableModelPrivate) меняется. Теперь тут хранится карта соответствия номеров полей (для внешних связей) оригинальных и расширенных в дополнительном списке exColumnData.

Класс QSqlRelation у нас заменяется на более общий вариант exColumnData.