Версия для печати темы
Форум на CrossPlatform.RU _ Qt Общие вопросы _ Custom Completer
Автор: gmurik2 6.11.2009, 13:49
Здравствуйте! Подскажите как можно реализовать Custom Completer вот такого характера:
при вводе символов в lineEdit он предлагал значения найденные по шаблону, например:
га
--гараж
--ул. Гагарина
--Газ
и т.д. ?
что-то в официальной доке ничего найти по этому поводу не смог
Автор: kwisp 6.11.2009, 14:30
gmurik2,
вот про это
Цитата
--ул. Гагарина
или вообще про Completer
не смог найти.. ?
Completer есть, даже примеры есть.
набери в ассистенте.
Автор: ViGOur 6.11.2009, 14:36
http://doc.crossplatform.ru/qt/4.5.0/tools-customcompleter.html
Автор: gmurik2 6.11.2009, 15:01
Цитата
Custom Completer Example
там не совсем то, что мне надо, мне надо чтобы выводились еще и те результаты где "га" встречается в середине слова
Автор: kwisp 6.11.2009, 16:02
мда..
просмотрел документацию.
пока не нашел решения.
Автор: ViGOur 6.11.2009, 16:12
Тогда глянь как в ассистенте реализован комплетер, у меня по крайней мере в ассистенте QtCreator'а (под ubuntu 9.10) комплетер работает так как тебе нужно.
Автор: gmurik2 9.11.2009, 8:20
Цитата(ViGOur @ 6.11.2009, 18:12)
Тогда глянь как в ассистенте реализован комплетер, у меня по крайней мере в ассистенте QtCreator'а (под ubuntu 9.10) комплетер работает так как тебе нужно.
Если имеется ввиду примеры examples\tools\completer и examples\tools\customcompleter, то они работают не так как мне нужно, они предлагают варианты, которые начинаются на введенные символы. Мне же надо чтобы когда я ввожу например символы "ми", мне предлагались варианты "
мир", "по
мидор" и т.д.
в доке также описываются варианты, которые реализованы в examples\tools\completer и examples\tools\customcompleter
Автор: Litkevich Yuriy 9.11.2009, 8:48
Цитата(gmurik2 @ 9.11.2009, 11:20)
как в ассистенте реализован комплетер
Qt Assistant - справочная программа
Автор: frg10 9.11.2009, 16:05
Цитата(ViGOur @ 6.11.2009, 16:12)
Тогда глянь как в ассистенте реализован комплетер, у меня по крайней мере в ассистенте QtCreator'а (под ubuntu 9.10) комплетер работает так как тебе нужно.
А там не используется стандартный комплетер. У них самописное там все.
gmurik2С помощью QCompleter то что вам нужно не получится сделать. Он всегда использует введенную строчку как префикс к слову.
Автор: kwisp 9.11.2009, 16:49
Цитата(frg10 @ 9.11.2009, 16:05)
У них самописное там все.
бери оно бесплатное:)
если есть вариант выдрать класс или группу классов выдирай смело.
а вообще минус в этом отношениии. тролли в своей же программе не пользуюь свой же комплиттер.
я почему то был уверен найти там(в доках по комплиттеру) QRegExp когда полез первый раз.. и удивился когда не нашел.
Автор: frg10 9.11.2009, 20:47
Цитата(kwisp @ 9.11.2009, 16:49)
а вообще минус в этом отношениии. тролли в своей же программе не пользуюь свой же комплиттер.
А в чем минус? Если компонент не подходит для задачи, то для чего его использовать?
Вообще, из названия класса видно для чего он нужен: он
дополняет. Т.е. вы печатаете
начало, а он подбирает
завершение. И со своей задачей он справляется отлично. А то что хочет от него топикстартер - это очень похоже, но не то.
Автор: haiflive 4.12.2010, 17:51
Вобщем вот нарыл такой код
QLineEdit *lineEdit = new QLineEdit;
// проблемы с разрывом всязи
QSqlTableModel* model = new QSqlTableModel();
model->setTable("abonents");
model->select();
QCompleter *completer = new QCompleter(model);
completer->setCaseSensitivity(Qt::CaseInsensitive);
completer->setCompletionColumn(7);// столбец по которому ищем
completer->setMaxVisibleItems(10);
connect(completer,SIGNAL(activated(QModelIndex)),this,SLOT(SelectAbonent(QModelIndex)));
lineEdit->setCompleter(completer);
Это слот
void NaligationPanel::SelectAbonent(const QModelIndex &index)
{
qDebug() << "Ttest ready!" << index.column() << ":" << index.data().toString();
// получить значение других стобцов нужно здесь
}
Вопрос, Как получить из базы данных значение из другого столбца?
В данном примере происходи поиск по по 7 столбцу(ФИО), а как получить значения других стобцов, что-то не пойму, есть конечно вариант получить значение строки и номер полученной записи, потом выполнить дополнительный SQL.. но можно же как-то проще все данные уже загружены требуется их как-то извлечь, може указатель там какой есть в model, или как-то через QModelIndex можно получить ссылку на модель?
И хочу учесть тот факт, что "ФИО пользователей" могут быть одинаковыми.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)