Russian Qt Forum

Qt => Базы данных => Тема начата: PavelVX от Май 31, 2011, 08:57



Название: Как у QCombobox с двумя column спозиционировать currentIndex по первому столбцу?
Отправлено: PavelVX от Май 31, 2011, 08:57
Всем доброго дня!

QComboBox * comboEdit = new QComboBox();
QSqlQueryModel * comboEditModel = new QSqlQueryModel;
strSQL = "select username, family from tt1"
comboEditModel->setQuery(strSQL);
comboEdit->setModel(comboEditAgentModel);
comboEdit->setModelColumn(1);
comboEdit->setEditable(true);

Как мне теперь, имея username, спозиционировать тукущую позицию QCombobox?????
В инете поискал, но или неправильно запрос делаю, или перебор, что не правильно.


Название: Re: Как у QCombobox с двумя column спозиционировать currentIndex по первому столбцу?
Отправлено: alexman от Май 31, 2011, 09:53
comboBox->setCurrentIndex( comboBox->findText( "username" ) );


Название: Re: Как у QCombobox с двумя column спозиционировать currentIndex по первому столбцу?
Отправлено: PavelVX от Май 31, 2011, 11:26
Такой фокус не прокатит! Столбца ДВА!
comboBox->findText( "username" ) - будет искать по столбцу family, и соответственно ничего не найдет :(


Название: Re: Как у QCombobox с двумя column спозиционировать currentIndex по первому столбцу?
Отправлено: Странник от Май 31, 2011, 15:37
подробности в документации (http://doc.qt.nokia.com/latest/qabstractitemmodel.html#match).
Код:
QModelIndexList indexes = comboBox->model()->match(comboBox->model()->index(0, 0), Qt::DisplayRole, "username", 1, Qt::MatchExactly);

if (!indexes.isEmpty()) comboBox->setCurrentIndex(indexes.first().row());


Название: Re: Как у QCombobox с двумя column спозиционировать currentIndex по первому столбцу?
Отправлено: PavelVX от Июнь 01, 2011, 05:55
 Странник, спасибо! Я почти так же потом нашел выход! :)
    comboBox->setCurrentIndex(comboBox->match(comboEditAgentModel->index(1,0,QModelIndex()),Qt::DisplayRole, "username",1,Qt::MatchExactly).first().row());
Но он у меня, по началу, не захотел работать! Был удивлен, но глядя на вашу строчку понял в чем дело! Оказалось это я, по postgresql привычке, пытался ему подсовывать 'username', вместо "username".
Спасибо большое!


Название: Re: Как у QCombobox с двумя column спозиционировать currentIndex по первому столбцу?
Отправлено: Странник от Июнь 01, 2011, 10:15
не за что = ) и поскольку match(...) может вернуть пустой список, проверку isEmpty() перед вызовом first() лучше все-таки делать (http://doc.qt.nokia.com/latest/qlist.html#first) = )