Могу ли я сделать QCompleter полностью встроенным и показать всплывающее окно - PullRequest
2 голосов
/ 23 октября 2009

Qt 4.5 (PyQt 4.6.1)

Я ищу виджет, похожий на QComboBox, который автоматически фильтрует его записи, начиная с ввода в текстовом поле. В комбинированном окне содержится около 300 предметов.

Я пробовал два подхода:

QLineEdit с QCompleter

Преимущества

  • Фильтрация элементов работает.

Недостатки

  • Не показывает всплывающее окно, если текстовое поле пусто.
  • Не выполняет встроенное завершение.
  • Позволяет вставлять элементы, которых нет в списке.

Редактируемый QComboBox со вставкой, установленной на нет

Преимущества

  • Хорошее всплывающее окно
  • Завершает встраивание в текстовое поле.

Недостатки

  • Без фильтрации
  • Ввод возможен только в или текстовом поле или во всплывающем окне. Нажатие на всплывающее окно не выбирает наиболее подходящий элемент во всплывающем окне.

Что мне нужно

  • Всплывающее окно для выбора элементов.
  • Медленные подсказки должны иметь возможность начинать указывать название элемента, и всплывающее окно переключается на наиболее подходящий.
  • Предпочтительно, я должен фильтровать элементы так, чтобы отображались только частично совпадающие элементы.

1 Ответ

1 голос
/ 23 октября 2009

Что касается вашей первой попытки с QLineEdit, вы можете установить completionMode, чтобы сделать это встроенным.

Для вашей второй попытки вы можете добавить объект QCompleter к вашему QCombBox, чтобы фильтровать ваши элементы по вашему желанию. Член QCompleter QComboBox должен предложить простой способ использования QCompleter.

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

...