Russian Qt Forum

Qt => Базы данных => Тема начата: BaHeK от Декабрь 17, 2010, 21:28



Название: Работа с QSqlRelationalTableModel через QComboBox..
Отправлено: BaHeK от Декабрь 17, 2010, 21:28
Здравствуйте! Возник у меня следующий вопрос... сразу на коде покажу... Есть простенькая таблица... в ней пару полей, я ее указываю в модели, и эту модель устанавливаю комбобоксу... Делаю чтобы отображался текст, вместо соответствующего индекса из таблицы...

QSqlRelationalTableModel *pRModel = new QSqlRelationalTableModel(this,QSqlDatabase::database("AdressD"));
pRModel->setTable("t_strana");
pRModel->select();

mf_cmbStrana->setModel(pRModel);
mf_cmbStrana->setModelColumn(pRModel->fieldIndex("data"));
mf_cmbStrana->setCurrentIndex(-1);

вопрос.. как мне при изменении узнать именно индекс выбранного поля...? не currentIndex() из комбобокса, а именно в модели... тоесть в таблице есть поля "id" и "data", вот id... Из QTableView аналогичный вопрос...

fio = m_pSqlRelationModel->data(m_pSqlRelationModel->index(mf_tableAllWorkers->currentIndex().row(),1)).toString();
если я сделал скажем - m_pRelationalModel->setRelation(1,QSqlRelation("t_strana","kod","naim")); как мне вместо строкового значения узнать значение id...? Заранее спасибо...


Название: Re: Работа с QSqlRelationalTableModel через QComboBox..
Отправлено: BaHeK от Декабрь 17, 2010, 23:51
Решил следующим образом... Если есть предложения получше, пишите..

QSqlRelationalTableModel *pTmpRModel = qobject_cast<QSqlRelationalTableModel*>(mf_cmbStrana->model());
mf_cmbStrana->setModelColumn(pTmpRModel->fieldIndex("id"));

//Вот оно!!!))))
QMessageBox(this,windowTitle(),mf_cmbStrana->currentText());

mf_cmbStrana->setModelColumn(pTmpRModel->fieldIndex("data"));


Название: Re: Работа с QSqlRelationalTableModel через QComboBox..
Отправлено: Paullo от Декабрь 21, 2010, 13:26
pRModel->index(mf_cmbStrana->currentIndex(),  pRModel->fieldIndex("id")).data().toString()
Не? Вроде как QComboBox в качестве своего индекса индекс модели использует.