Russian Qt Forum
Сентябрь 21, 2024, 10:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QCompleter и контекстный (inline) поиск в модели  (Прочитано 3133 раз)
Whiplash
Гость
« : Декабрь 20, 2011, 08:59 »

Здравствуйте, коллеги. Очень хочется, чтобы QCompleter работал не только по началу строки, но и искал совпадения в середине строк. Есть варианты какие-нибудь
реализации? Ну, кроме как совсем отказаться от комплитера и сколхозить что-то своё Улыбающийся

Эта тема пару раз поднималась, но может с 2009 года что-то изменилось...
Записан
Whiplash
Гость
« Ответ #1 : Декабрь 21, 2011, 08:07 »

Нет никакого способа использовать комплитер в таком виде. Нужно либо форкать его, или ждать Qt5, и надеяться, что там функционал будет пошире.
Записан
Whiplash
Гость
« Ответ #2 : Январь 16, 2012, 11:48 »

Кстати, если кому интересно, то я пользуюсь вот таким способом:
Код:
QCompleter *completer=cb->completer();
    completer->setCaseSensitivity(Qt::CaseInsensitive);
    QSortFilterProxyModel *filterModel=new QSortFilterProxyModel(completer);
    filterModel->setSourceModel(cb->model());
    filterModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
    completer->setModel(filterModel);
    completer->setCompletionMode(QCompleter::UnfilteredPopupCompletion);
    QObject::connect(cb->lineEdit(), SIGNAL(textEdited(QString)), filterModel, SLOT(setFilterRegExp(QString)));
   

cb - это указатель на QComboBox

Плюс, и одновременно минус в том, что QCompleter не отсабклассен.
В принципе, чтобы добиться такого поведения нужно отсабклассить комплитер, и там с прокси-модел поколдовать.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.054 секунд. Запросов: 20.