Russian Qt Forum
Сентябрь 30, 2024, 10:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как у QCombobox с двумя column спозиционировать currentIndex по первому столбцу?  (Прочитано 4372 раз)
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?Непонимающий?
В инете поискал, но или неправильно запрос делаю, или перебор, что не правильно.
Записан
alexman
Гость
« Ответ #1 : Май 31, 2011, 09:53 »

comboBox->setCurrentIndex( comboBox->findText( "username" ) );
Записан
PavelVX
Гость
« Ответ #2 : Май 31, 2011, 11:26 »

Такой фокус не прокатит! Столбца ДВА!
comboBox->findText( "username" ) - будет искать по столбцу family, и соответственно ничего не найдет Грустный
Записан
Странник
Гость
« Ответ #3 : Май 31, 2011, 15:37 »

подробности в документации.
Код:
QModelIndexList indexes = comboBox->model()->match(comboBox->model()->index(0, 0), Qt::DisplayRole, "username", 1, Qt::MatchExactly);

if (!indexes.isEmpty()) comboBox->setCurrentIndex(indexes.first().row());
Записан
PavelVX
Гость
« Ответ #4 : Июнь 01, 2011, 05:55 »

 Странник, спасибо! Я почти так же потом нашел выход! Улыбающийся
    comboBox->setCurrentIndex(comboBox->match(comboEditAgentModel->index(1,0,QModelIndex()),Qt::DisplayRole, "username",1,Qt::MatchExactly).first().row());
Но он у меня, по началу, не захотел работать! Был удивлен, но глядя на вашу строчку понял в чем дело! Оказалось это я, по postgresql привычке, пытался ему подсовывать 'username', вместо "username".
Спасибо большое!
Записан
Странник
Гость
« Ответ #5 : Июнь 01, 2011, 10:15 »

не за что = ) и поскольку match(...) может вернуть пустой список, проверку isEmpty() перед вызовом first() лучше все-таки делать = )
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 20.