немного переделанный пример из интернета:
    QSqlRelationalTableModel * albumsRelation = new QSqlRelationalTableModel(this);
    albumsRelation->setTable("public.zakaz");
    albumsRelation->setRelation(1, QSqlRelation("public.polu1", "\"KODPL\"", "\"NAIM\""));
    ComboBoxDelegateCaption * comboClient = new ComboBoxDelegateCaption(this); /*мой делегат*/
Когда я пытаюсь редактировать таблицу, то значения меняются не всегда. Нашел отладчиком и место проблемы: 
( QSqlRelationalTableModel.cpp)
bool QSqlRelationalTableModel::setData(const QModelIndex &index, const QVariant &value,
                                       int role)
{
    Q_D(QSqlRelationalTableModel);
    if ( role == Qt::EditRole && index.column() > 0 && index.column() < d->relations.count()
            && d->relations.value(index.column()).isValid()) {
        QRelation &relation = d->relations[index.column()];
        if (!relation.isDictionaryInitialized())
            relation.populateDictionary();
        if (!relation.dictionary.contains(value.toString()))
            return false;
    }
    return QSqlTableModel::setData(index, value, role);
}
метод relation.dictionary.contains(value.toString()) не находит значение в 
QHash<QString, QVariant> dictionary;//maps keys to display values! 

Начал переделывать этот фаил, но изменения не компилируются.
Всвязи с этим вопрос: что делать? Как мне посмотреть содержимое QHash или как перекомпилировть этот файлик, что бы он принял отладочные изменения?