не совсем так, вернее совсем не так, index - это срока комбо, а не колонка модели
/*!
Returns the data for the given \a role in the given \a index in the
combobox, or QVariant::Invalid if there is no data for this role.
*/
QVariant QComboBox::itemData(int index, int role) const
{
Q_D(const QComboBox);
QModelIndex mi = d->model->index(index, d->modelColumn, d->root);
return d->model->data(mi, role);
}
после загрузки комбо из базы нужны 2 операции:
1. после выбора пользователем итема комбо, надо получить id этого итема, и тут проблем нет, т.к. индекс комбо - это строка модели
2. перед показом комбо пользователю надо выделить один из итемов. и у нас есть id этого итема, но нет его индекса в модели комбобокса. а вот как найти номер строки модели по значению одного из полей я и не нашел.
model::match() - не подходит т.к. "By default, this function will perform a wrapping, string-based comparison on all items, searching for items that
begin with the search term specified by value." т.е. если искать 1, он найдет 1, 10, 11 ...
остается либо делать самому цикл по модели и искать номер строки
либо использовать QSortFilterProxyModel для поиска а потом позвать mapToSource, но оба варианта кажутся мне жуткими костылями
не думаю что я первый кто столкнулся с подобной задачей,
поделитесь опытом плиз