Есть база данных на несколько таблиц.
С ними я работаю через QTableView, через модель QSqlRelationalTableModel. В качестве ItemDelegate я использую QSqlRelationDelegate. Благодаря этому получаю комбобокс прямо в таблице на форме, в котором я могу выбирать все значения, доступные в этом поле (а они определяются из другой таблицы с помощью FOREIGN KEY автоматически этим delegate'ом).
Есть следующая проблема, при попытке получить данные выделенной строки в QTableView, я получаю все данные из ячеек, кроме тех в которых установленo setRelation ( вместо данных пустые значнения).
Как получить эти данные из связных таблиц?
void MainWindow::init(){
connection=Connection::getInstance();
ui->tableView->viewport()->installEventFilter(this);
model = new QSqlRelationalTableModel(0,connection->getDB());
model->setHeaderData(0, Qt::Horizontal, tr("id"));
model->setHeaderData(1, Qt::Horizontal, tr("name"));
model->setHeaderData(2, Qt::Horizontal, trUtf8("assort"));
model->setTable("table1");
model->setRelation(2, QSqlRelation("tasrt", "id", "name_as"));
model->select();
ui->tableView->setModel(model);
ui->tableView->setColumnHidden(0,true);
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->tableView->setItemDelegate(QSqlRelationalDelegate(ui->tableView));
ui->tableView->resizeColumnsToContents();
ui->tableView->resizeRowsToContents();
ui->tableView->show();
}
void MainWindow::saveSettings(){
QItemSelectionModel *selectionModel = ui->tableView->selectionModel();
QModelIndexList indexes = selectionModel->selectedRows();
QModelIndex index;
foreach (index, indexes) {
QSqlRecord record = model->record(index.row());
QString settings_file;
settings_file.append(record.value("name").toString()).append("\n");
settings_file.append(record.value("name_as").toString()).append("\n");
qDebug()<<settings_file;
}
}
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)