QCompleter: Базовое авто-дополнение в Qt

QCompleter: Базовое авто-дополнение в Qt

Авто-дополнение текста в Qt проще всего реализовать с помощью специально разработанного для этой цели стандартного компонента QCompleter. Разработаем приложение, демонстрирующее базовые принципы работы с ним.

Начнем с компоновки формы в Qt Designer.

В верхней части виджета располагается QLineEdit и QPushButton. Снизу разместился QListWidget. Авто-дополнение мы установим для поля ввода QLineEdit на основе слов из списка QListWidget.

Если после начала ввода текста в QLineEdit обнаруживается совпадение с одним или несколькими словами из QListWidget, то QCompleter предлагает варианты завершения в выпадающем списке (аналогично выпадающему списку QComboBox).

Список слов можно пополнять путем нажатия кнопки Добавить. При этом мы обеспечим добавление лишь уникальных вариантов дополнения (дубликаты нам не нужны).

Реализация

Заголовочный файл completerdemowidget.h:

А теперь completerdemowidget.cpp:

Особый интерес представляет фрагмент инициализации QCompleter-а:

Авто-дополнение может осуществляться либо на основе списка строк QStringList, либо на основе Модели. Мы воспользовались вторым вариантом, указав, что наш completer должен использовать модель списка ui->listWidget->model(). В общем случае подход на основе Модели является более универсальным. Например, Модель можно привязать к базе данных и помогать пользователям вводить адреса или какие-либо названия.

Поиск совпадений для авто-дополнения может регулироваться на основе учета регистра символов. Мы в примере устанавливаем опцию поиска без учета регистра Qt::CaseInsensitive.

Понравилась статья? Поделиться с друзьями:
Комментарии: 2
  1. Anonymous

    Добрый день можете в следующей статье рассказать про реализацию алгоритма шифрования CAST-128.

    1. Алекс (автор)
Добавить комментарий