немного переделанный пример из интернета:
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 или как перекомпилировть этот файлик, что бы он принял отладочные изменения?