Russian Qt Forum
Июля 05, 2025, 13:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Поиск как в Яндексе  (Прочитано 8399 раз)
jatsuk
Гость
« : Июня 08, 2011, 11:18 »

Здравствуйте, как можно реализовать поиск как в яндексе.

Есть Qlistedit, туда вводим слово. Должна всплывать подсказка, с возможными вариантами.
Сами эти варианты хранятся в таблице базы данных.
Пока набираешь каждую букву, варианты постепенно отпадают.

Как вообще можно это сделать ?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Июня 08, 2011, 11:21 »

Код
C++ (Qt)
void QLineEdit::setCompleter ( QCompleter * c )
Записан

Qt 5.11/4.8.7 (X11/Win)
jatsuk
Гость
« Ответ #2 : Июня 08, 2011, 12:18 »

Спасибо, нашел код, всё заработало

Код:
  QSqlTableModel* model = new QSqlTableModel();
    model->setTable("alfa");
    model->select();

    QCompleter *completer = new QCompleter(model);
    completer->setCaseSensitivity(Qt::CaseInsensitive);
    completer->setCompletionColumn(0);// столбец по которому ищем
    //completer->setMaxVisibleItems(10);

    connect(completer,SIGNAL(activated(QModelIndex)),this,SLOT(SelectAbonent(QModelIndex)));

     ui->lineEdit->setCompleter(completer);

Но теперь возникла проблема.
А если у меня несколько поисков. В зависимости какой чек бокс выбран, нужно искать по разным таблицам.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Июня 08, 2011, 12:22 »

Ну дык и используй несколько QCompleter-ов.
Записан

Qt 5.11/4.8.7 (X11/Win)
jatsuk
Гость
« Ответ #4 : Июня 08, 2011, 12:45 »

Да чё-то торможу немного  Смеющийся

Сделал. Просто в слоте нажатия чек бокса вписать код, где переключается completer
 ui->lineEdit->setCompleter(completer3);

Все отлично, но осталось пару проблем.

НЕ работает completer->setMaxVisibleItems(10);
изза этого длина всплювающего окна может быть очень большой.
Компилятор ругается, что такого нет в completer, действительно нет, setMaxVisibleItems это для комбо боксов

И ещё странная сортировка, она наоборот, выдает результаты алфавита с конца (
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Июня 08, 2011, 12:51 »

НЕ работает completer->setMaxVisibleItems(10);
изза этого длина всплювающего окна может быть очень большой.
Компилятор ругается, что такого нет в completer, действительно нет, setMaxVisibleItems это для комбо боксов
Обнови Qt - This property was introduced in Qt 4.6.

Цитировать
И ещё странная сортировка, она наоборот, выдает результаты алфавита с конца (
См. QCompleter::modelSorting()
Цитировать
The sort order (i.e ascending or descending order) of the model is determined dynamically by inspecting the contents of the model.
Записан

Qt 5.11/4.8.7 (X11/Win)
jatsuk
Гость
« Ответ #6 : Июня 08, 2011, 13:11 »

Спасибо большое.
Качаю qt creator 2.2

Стояла версия 2009 года (просто в универе на серваке лежала)
А чем вообще отличается qt  от qt creator ??

Я так понял qt  это основа , а с него уже делаются qt creator и т.д...
« Последнее редактирование: Июня 08, 2011, 13:13 от jatsuk » Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #7 : Июня 08, 2011, 13:43 »

Qt - набор библиотек и классов.
Qt Creator - один и редакторов, ориентированных на Qt.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #8 : Июня 08, 2011, 13:44 »

Qt Creator - один и редакторов, ориентированных на Qt.
Скорее IDE, чем редактор)
Записан

Qt 5.11/4.8.7 (X11/Win)
jatsuk
Гость
« Ответ #9 : Июня 08, 2011, 13:58 »

А что сделать, чтобы при определенном чек боксе эти всплывающие подсказки отключались ?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #10 : Июня 08, 2011, 14:04 »

А что сделать, чтобы при определенном чек боксе эти всплывающие подсказки отключались ?
Ну а чего ассистент-то не читаешь Непонимающий
См. QLineEdit::setCompleter().
Записан

Qt 5.11/4.8.7 (X11/Win)
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #11 : Июня 08, 2011, 14:12 »

Скорее IDE, чем редактор
Формально да, хотя средства компиляторы и отладчики у него в общем-то внешние от сторонних производителей, а сам Creator - текстовый редактор + средства автоматизации (сборки и др.).

А что сделать, чтобы при определенном чек боксе эти всплывающие подсказки отключались ?
setCompleter( 0 );
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #12 : Июня 08, 2011, 14:16 »

Формально да, хотя средства компиляторы и отладчики у него в общем-то внешние от сторонних производителей
Сейчас такое практически повсеместно во всех IDE, особенно под unix.
Записан

Qt 5.11/4.8.7 (X11/Win)
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #13 : Июня 08, 2011, 14:19 »

А что сделать, чтобы при определенном чек боксе эти всплывающие подсказки отключались ?
setCompleter( 0 );
Ну и зачем подсказываешь? Улыбающийся
Я же ему ещё в своём первом посте дал ответ. Надо приучать быть внимательным.
Записан

Qt 5.11/4.8.7 (X11/Win)
jatsuk
Гость
« Ответ #14 : Июня 08, 2011, 14:23 »

Половину скачал, надеюсь с этой функцией изменится размер.

Ерунда творится  Улыбающийся с одной таблицей почему то все нормально всегда 7 элементов на букву.
А со второй таблицей неладное , то нормально с прокруткой , то без неё все элементы,  то вообще сначала все варианты, а потом белая колонка вниз до бесконечности

странно  Улыбающийся
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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