Eсть QSqlTableModel, устанавливаю мапперу эту модель.
sql_typeModel = new QSqlTableModel(this, db);
sql_typeModel->setTable("table_tg");
sql_typeModel->select();
sql_typeModel->setEditStrategy(QSqlTableModel::OnManualSubmit);
dataMapper = new QDataWidgetMapper(this);
dataMapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit);
dataMapper->setModel(sql_typeModel);
dataMapper->toFirst();
для отображения в QTreeView создал отдельно модель, для построения которой использована QSqlTableModel(выше). configTreeModel = new ConfigTreeModel(sql_typeModel, this);
proxyModel = new QSortFilterProxyModel(this);
proxyModel->setSourceModel(configTreeModel); // прокси для фильтрации данных по колонке
отображаю во вьюхеtreeView->setModel(proxyModel);
treeView->setCurrentIndex(sql_typeModel->index(0, 0, QModelIndex()));
Пока не пришлось использовать QSortFilterProxyModel все работало нормально, а теперь возникла проблема - неправильно маппятся данные из модели дерева. Делаю так:
connect(treeView->selectionModel(), SIGNAL(currentRowChanged(QModelIndex, QModelIndex)),
this, SLOT(setMappingTreeView(QModelIndex)));
//-------------------------------------------------
void ConfigDialog::setMappingTreeView(const QModelIndex &index)
{
QModelIndex proxyIndex;
if (index.isValid()) {
proxyIndex = proxyModel->mapToSource(index);
if (proxyIndex.isValid()) {
QSqlRecord record = sql_typeModel->record(proxyIndex.row());
int id = record.value("id").toInt();
dataMapper->setCurrentIndex(id);
}
}
}
Подскажите, кто знает, что делаю не так?