Russian Qt Forum

Qt => Model-View (MV) => Тема начата: NKovalev64 от Апрель 20, 2014, 20:19



Название: QComboBox & Model\View
Отправлено: NKovalev64 от Апрель 20, 2014, 20:19
Есть QComboBox, с примененной к нему QSqlQueryModel моделью (из 2 столбцов).
Мне нужно что бы один из столбцов отображался, а значение другого я бы мог получить из значения первого. Т.е. например модель содержит названия и id's чего-либо, названия отображаются в комбобоксе, а id нужно получить.
Модель к боксу я применил, нужную колонку для отображения выставил, а вот как узнать индекс текущего выбранного элемента и по нему вычислить значение второго столбца?


Название: Re: QComboBox & Model\View
Отправлено: OKTA от Апрель 21, 2014, 10:16
разве не помогает?

Цитировать
currentIndex : int
This property holds the index of the current item in the combobox.
The current index can change when inserting or removing items.
By default, for an empty combo box or a combo box in which no current item is set, this property has a value of -1.


Название: Re: QComboBox & Model\View
Отправлено: Hellraiser от Апрель 21, 2014, 10:33
Код
C++ (Qt)
QSqlQueryModel *_model = qobject_cast<QSqlQueryModel *>(ui.comboBox->model());
if (!_model)
  return;
QSqlRecord _rec = _model->record(ui.comboBox->currentIndex());
int _id = _rec.value(_rec.indexOf("id")).toInt();


Название: Re: QComboBox & Model\View
Отправлено: NKovalev64 от Апрель 21, 2014, 18:59
Код
C++ (Qt)
QSqlQueryModel *_model = qobject_cast<QSqlQueryModel *>(ui.comboBox->model());
if (!_model)
  return;
QSqlRecord _rec = _model->record(ui.comboBox->currentIndex());
int _id = _rec.value(_rec.indexOf("id")).toInt();

Большое спасибо!