Как выполнить выпадающие предложения слов в Qt?

#c #qt #drop-down-menu #autocomplete #qlineedit

#c #qt #выпадающее меню #автозаполнение #qlineedit

Вопрос:

Допустим, у меня есть 10 имен в a QListWidget (которое скрыто) и a QLineEdit . Теперь, если я введу букву «a» в строке Редактирования, она должна отображать выпадающий список всех тех имен в виджете списка, которые начинаются с буквы «A». пользователь может выбирать с помощью мыши или клавиатуры (поскольку будет вертикальная полоса прокрутки). Я не уверен QLineEdit , сможет ли a это сделать. Но я хотел бы знать, что есть для этого.

Ответ №1:

Вы можете использовать QCompleter , который предоставляет способ автозаполнения в виджетах, таких как QLineEdit и QComboBox . Когда пользователь начинает вводить слово, QCompleter предлагает возможные способы завершения слова на основе списка слов.

Пример из документации 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);
  

Комментарии:

1. Спасибо, я попробую и отправлю ответ

2. Вам даже не нужно QCompleter заполнять данными вручную, вы можете просто передать модель, которую вы QListWidget уже используете, вызвав QAbstractItemView::model() функцию.

3. Я намного более понятен и точен, чем пример QtProject. Спасибо.

4. Отмените это. Страница QCompleter на самом деле дает именно этот пример. Мой плохой.