2013-07-22 2 views
3

Мне не удалось выбрать первый элемент дополнения, когда всплывающее окно отображается в режиме PopupCompletion. Мой текущий код, который не работает:автоматически выбирает первое предложение QCompleter в режиме PopupCompletion

completer->setCompletionPrefix(text); 
QItemSelectionModel* sm = new QItemSelectionModel(completer->completionModel()); 
sm->select(completer->completionModel()->index(0,0), QItemSelectionModel::Select); 
completer->popup()->setSelectionModel(sm); 

Любые предложения?

ответ

2

Я хотел бы попробовать изменить порядок последних 2-х линий:

completer->popup()->setSelectionModel(sm); 
sm->select(completer->completionModel()->index(0,0), QItemSelectionModel::Select); 

Возможно изменение выбора для всплывающего окна (его вид) ocurs когда SelectionChanged() является emited. Итак, сначала нужно выбрать модель выбора, затем выбрать.

недействительное QItemSelectionModel :: выберите (Const QModelIndex & индекса, команду QItemSelectionModel :: SelectionFlags) [виртуальный слот]

Выбирает индекс элементов модели, используя указанную команду, и излучает SelectionChanged().

Кстати, у не должны создать новую модель выбора, просто задать всплывающее окно для него (Побейте, его вид):

completer-> всплывающее окно() -> selectionModel();

http://qt-project.org/doc/qt-5.0/qtwidgets/qabstractitemview.html#selectionModel

+0

Спасибо за ваш ответ, я буду стараться, что в ближайшее время;) –

+0

@AntoineLafarge Эй человек, если это работает для вас, вы должны принять ответ –

Смежные вопросы