2013-07-22 19 views
3

當PopupCompletion模式顯示彈出窗口時,我沒有設法選擇完成者的第一項。 我目前的代碼不起作用:在PopupCompletion模式下自動選擇QCompleter的第一個命題

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

有什麼建議嗎?

回答

2

我會嘗試將最後2行的順序:時的SelectionChanged()是emited

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

可能選擇的彈出(它的一個視圖)的變化ocurs。 所以你必須先設置選擇模型,然後做選擇。

空隙QItemSelectionModel ::選擇(常量QModelIndex &指數, QItemSelectionModel :: SelectionFlags命令)[虛槽]

使用指定的命令選擇模型項索引,併發射 的SelectionChanged()。

BTW,U不必須創建一個新的選擇模型,只問彈出它(Againt,其視圖):

completer->彈出() - > selectionModel設置();

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

+0

謝謝您的回答,我會盡快嘗試;) –

+0

@AntoineLafarge嗨,老兄,如果爲你工作,你需要接受的答案 –

相關問題