Здравствуйте.
Столкнулся проблемой при попытке использовать combobox для редактирования поля таблицы(ProgrammOptions). Содержимое combobox загружается из 2 таблицы(Version). Таблицы связываются по внешнему ключу FK_Version в ProgrammOptions.
Суть проблемы: поля таблицы Version загружаются в combobox и редактируются, но после загрузки combobox установлен в самое первое значение в списке, какой бы не был выбран до этого.
//Заполняю модель
model2 = new QSqlRelationalTableModel();
model2->setEditStrategy(QSqlTableModel::OnFieldChange);
model2->setTable("ProgrammOptions"); /*Первая таблица*/
int idVersionFK = model2->fieldIndex("FK_Version"); /*Внешний ключ*/
model2->setRelation(idVersionFK, QSqlRelation("Version", "idVersion", "Name")); /*Устанавливаем связь со второй таблицей */
if ( !model2->select() ){
qDebug()<<"No";
}
//Заполняю combobox данными из модели и говорю что показывать нужно колонку Name
ui->comboBox->setModel(model2->relationModel(idVersionFK));
ui->comboBox->setModelColumn(model2->relationModel(idVersionFK)->fieldIndex("Name"));
//Создаю маппер.
mapper = new QDataWidgetMapper();
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"), "currentIndex"); /* Привязываемся по свойству currentIndex*/
mapper->toFirst();
Верхняя таблица это Version
Нижняя таблица ProgrammOptions