2014-06-16 9 views
6

Dire che ho 10 nomi in un QListWidget (che è nascosto) e uno QLineEdit. Ora se digito la lettera "a" nella riga Modifica dovrebbe visualizzare un menu a discesa di tutti quei nomi nel widget elenco che iniziano con la lettera "A". l'utente può selezionare usando un mouse o una tastiera (dato che ci sarà una barra di scorrimento verticale). Non sono sicuro che un QLineEdit potrebbe farlo. Ma mi piacerebbe sapere cosa c'è là fuori per realizzare questo.Come realizzare i suggerimenti parola a discesa in Qt?

risposta

18

È possibile utilizzare QCompleter che fornisce un modo per il completamento automatico in widget come QLineEdit e QComboBox. Quando l'utente inizia a digitare una parola, QCompleter suggerisce possibili modi per completare la parola, in base a un elenco di parole.

Un esempio dalla documentazione Qt:

QStringList wordList; 
wordList << "alpha" << "omega" << "omicron" << "zeta"; 

QLineEdit *lineEdit = new QLineEdit(this); 

QCompleter *completer = new QCompleter(wordList, this); 
completer->setCaseSensitivity(Qt::CaseInsensitive); 
lineEdit->setCompleter(completer); 
+0

Grazie Ill dare a questo una prova e palo – Rajeshwar

+2

Non c'è nemmeno bisogno di popolare il 'QCompleter' con i dati manualmente, è possibile passare solo il modello che il tuo 'QListWidget' sta già usando chiamando la funzione' QAbstractItemView :: model() '. – RobbieE

+0

Molto più semplice e diretto rispetto all'esempio QtProject. Grazie. – bmahf