crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QSqlRelationalTableModel и QTableView
Гость_sdg_*
сообщение 24.4.2011, 14:54
Сообщение #1





Гости








    


Есть база данных на несколько таблиц.
С ними я работаю через QTableView, через модель QSqlRelationalTableModel. В качестве ItemDelegate я использую QSqlRelationDelegate. Благодаря этому получаю комбобокс прямо в таблице на форме, в котором я могу выбирать все значения, доступные в этом поле (а они определяются из другой таблицы с помощью FOREIGN KEY автоматически этим delegate'ом).
Есть следующая проблема, при попытке получить данные выделенной строки в QTableView, я получаю все данные из ячеек, кроме тех в которых установленo setRelation ( вместо данных пустые значнения).
Как получить эти данные из связных таблиц?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_sdg_*
сообщение 24.4.2011, 21:28
Сообщение #2





Гости








    


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;
}

}


удалось получить индекс из связной таблицы, как получить значение по этому индексу?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 15:12