Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: mal от Январь 14, 2010, 19:54



Название: qt-4.6.0: QCompleter - отключить фильтрацию?
Отправлено: mal от Январь 14, 2010, 19:54
можно ли (и если можно то как?) сделать так, чтоб QCompleter не фильтровал поданый ему список строк.

Ковырял кутовый пример customcompleter, но так и не понял можно ли так сделать.
Установка комплетеру свойства QCompleter::UnfilteredPopupCompletion не помогает
Код:
completer->setCompletionMode(QCompleter::UnfilteredPopupCompletion);

Конкретно есть список данных в которых образец поиска включен не только в начале строки. В примере customcompleter происходит фильтрация по образцу с начала строки.
У меня есть список строк, который  я хочу вывалить во время редактирования в QLineEdit, так как оно сделано в кутовом примере. Т.е. в фокусе ввода находится QLineEdit, а список строк содержащих образец ввода виден в всплывающем виджете. Причем по ним доступен скролинг. Строки я готовлю в другом месте сам, и в них ничего не надо фильтровать. Создавать отдельно QListWidget, стыковать его к QLineEdit как то коряво, ибо есть практически готовая реализация в customcompleter.
Хотелось бы использовать реализацию QLineEdit c QCompleter, но как отказаться в комплетере от фильтрации не понимаю.
Есть идеи?


Название: Re: qt-4.6.0: QCompleter - отключить фильтрацию?
Отправлено: mal от Январь 15, 2010, 13:56
Подсказал мне тут Kirill , что в моем случае не надо смотреть на реализацию customcompleter, т.к.  список у меня каждый раз получается статический.
Сделал так (детали опускаю)
Код:

QStringListModel *model = new QStringListModel(list); // создал модель , list - сформированный QStringList
QCompleter completer = new QCompleter(this); // создал комплетер
completer->setCompletionMode(QCompleter::UnfilteredPopupCompletion); // вываливать все без фильтрации

completer->setModel(model); // установили модель
combo_box->setCompleter(completer); // установили комбобоксу комплетер
completer->complete(); // раскрыли комплетер

так работает. При каждой смене образца поиска создаю новую QStringListModel и подсовываю ее в комплетер.
Цель достигнута, проблема решена.