Список в QComboBox создаётся, навигация по QTableView отображается в привязанных QTextEdit и QLineEdit, a в QComboBox - нет. Его значение всегда = 1
Код строил на основе Qt демо-программы Books:
// Create the data model
QSqlRelationalTableModel *srcModel;
srcModel = new QSqlRelationalTableModel(ui.TVSources);
srcModel->setEditStrategy(QSqlTableModel::OnManualSubmit);
srcModel->setTable("sources");
// Remeber the indexes of the columns
int authorIdx = srcModel->fieldIndex("author");
int author_shortIdx = srcModel->fieldIndex("author_short");
// Set the relations to the other database tables
srcModel->setRelation(authorIdx, QSqlRelation("authors", "id", "name"));
srcModel->setRelation(author_shortIdx, QSqlRelation("authors", "id", "name_short"));
// Populate the srcModel
if (!srcModel->select()) {
QMessageBox::critical(this, "Unable to use Database", "Error selecting from database: " + srcModel->lastError().text());
return;
}
// Set the srcModel and hide some columns
ui.TVSources->setModel(srcModel);
ui.TVSources->setSelectionMode(QAbstractItemView::SingleSelection);
// Initialize the Author combo box
ui.CBAuthor->setModel(srcModel->relationModel(authorIdx));
ui.CBAuthor->setModelColumn(srcModel->relationModel(authorIdx)->fieldIndex("name"));
// Connect widgets with database
QDataWidgetMapper *mapper = new QDataWidgetMapper(this);
mapper->setModel(srcModel);
...
mapper->addMapping(ui.CBAuthor, authorIdx); //!!! не работает
mapper->addMapping(ui.LEAuthorShort, author_shortIdx); // другое lookup поле из той же таблицы
connect(ui.TVSources->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)), mapper, SLOT(setCurrentModelIndex(QModelIndex)));
ui.TVSources->setCurrentIndex(srcModel->index(0, 0));
Если привязываю к этому полю вместо QComboBox QLineEdit, то привязка работает. т.е. код
mapper->addMapping(ui.LEAuthorShort, authorIdx);
Отображает в QLineEdit то, что QComboBox не хочет отображать.
Несколько раз сверялся с демо - всё вроде бы также настроенно. Подскажите, пожалуйста, в чём недосмотр?