Имеется форма редактирования данных, для связи виджетов с конкретными полями используется QDataWidgetMapper. Модель маппера - QSqlRelationalTableModel, модель QComboBox на этой форме - одна из relationModel'ей модели маппера.
model2 = new QSqlRelationalTableModel();
model2->setEditStrategy(QSqlTableModel::OnFieldChange);
model2->setTable("ProgrammOptions");
int idVersionFK = model2->fieldIndex("FK_Version");
model2->setRelation(idVersionFK, QSqlRelation("Version", "idVersion", "Name"));
Заполним данными combobox
ui->comboBox->setModel(model2->relationModel(idVersionFK));
ui->comboBox->setModelColumn(model2->relationModel(idVersionFK)->fieldIndex("Name"));
Ностроим mapper
mapper = new QDataWidgetMapper();
//mapper->setItemDelegate(new QSqlRelationalDelegate());
mapper->setSubmitPolicy(QDataWidgetMapper::AutoSubmit);
mapper->setOrientation(Qt::Horizontal);
mapper->setModel(model2);
mapper->addMapping(ui->checkBoxModbus, model2->fieldIndex("EnableModbus"));
mapper->addMapping(ui->checkBoKIABING3, model2->fieldIndex("EnableKIABING"));
mapper->addMapping(ui->checkBox3D, model2->fieldIndex("Enable3D"));
mapper->addMapping(ui->comboBox, model2->fieldIndex("Name"), "currentText");
mapper->toFirst();
Проблема состоит в том что если я использую
mapper->addMapping(ui->comboBox, model2->fieldIndex("Name"), "currentText");
то combobox загрузит нужные данные из базе и установится в текущее значение записи. Но при редактировании не обновит модель.
Если поменять третий параметр на currentText
mapper->addMapping(ui->comboBox, model2->fieldIndex("Name"), "currentText");
то combobox загрузит данные и встанет на перове значение с 0 индексом, при редактировании он обновит модель и сохранит в базу.
Как мне сделать что бы combobox правильно читал текущее значение и передавал изменения в модель.
При написании кода руководствовался примером Books.