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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Интуитивный поиск  (Прочитано 5406 раз)
Bzzzuka
Гость
« : Апрель 03, 2012, 17:55 »

Препод заказал сделать в проге интуитивный поиск по базе типа вот такого. Я пуста Непонимающий у кого-нибудь есть какие нибудь идеи?

Записан
V1KT0P
Гость
« Ответ #1 : Апрель 03, 2012, 18:31 »

Препод заказал сделать в проге интуитивный поиск по базе типа вот такого. Я пуста Непонимающий у кого-нибудь есть какие нибудь идеи?


Я думаю картинка слишком большая.
Если я понял то что увидел в горстке пикселей то банально выводи все строки в которых есть искомая подстрока. Банально до предела.
Записан
Bzzzuka
Гость
« Ответ #2 : Апрель 03, 2012, 18:35 »

Ну так расскажите как это делается если вы знаете и это так банально.
Записан
V1KT0P
Гость
« Ответ #3 : Апрель 03, 2012, 18:44 »

Ну так расскажите как это делается если вы знаете и это так банально.
Ясно хочешь получить готовое вместо того чтоб немного подумать.
Не проверял но должно работать:
Код
C++ (Qt)
QStringList intuitiveSearch(QStringList list, QString text)
{
   QStringList result;
   for (int i=0; i<list.count(); i++)
       if (list.at(i).contains(text, Qt::CaseInsensitive))
           result.append(list.at(i));
   return result;
}
Записан
Bzzzuka
Гость
« Ответ #4 : Апрель 03, 2012, 18:49 »

а как это к базе применить?
Записан
V1KT0P
Гость
« Ответ #5 : Апрель 03, 2012, 18:56 »

а как это к базе применить?
Какие будут вопросы, такие и ответы.
Все зависит от базы данных, но в общих чертах:
Код
SQL
SELECT name FROM my_table WHERE name LIKE('%search_text%');
Записан
Bzzzuka
Гость
« Ответ #6 : Апрель 03, 2012, 19:03 »

Ну так обратите внимание на мой ник и на то что подфорум называется "Вопросы новичков"
Записан
V1KT0P
Гость
« Ответ #7 : Апрель 03, 2012, 19:08 »

Ну так обратите внимание на мой ник и на то что подфорум называется "Вопросы новичков"
Ну так я и в моих ответах вообще ничего сложного нету. А вот как тебе могут помочь если ты пишешь не подробный вопрос. Надо было сразу начинать с того что данные у тебя в базе, упомянуть какая база данных, как ты с ней взаимодействуешь, на чем пишешь =).
Записан
Странник
Гость
« Ответ #8 : Апрель 03, 2012, 19:42 »

используйте QLineEdit + QCompleter с моделью QSqlQueryModel. если грубо
Код:
QSqlQueryModel *model = new QSqlQueryModel(this);
model->setQuery("SELECT name FROM contragents ORDER BY name"); //запрос, ясное дело, ваш

QCompleter *completer = new QCompleter(this);
completer->setModel(model);
completer->setModelSorting(QCompleter::CaseSensitivelySortedModel);
lineEdit->setCompleter(completer);
« Последнее редактирование: Апрель 03, 2012, 19:46 от Странник » Записан
Bzzzuka
Гость
« Ответ #9 : Апрель 03, 2012, 20:33 »

вот связь

QObject::connect(ui->lineEdit,SIGNAL(textEdited(QString s)), this, SLOT(QuickSearch(QString s)));

вот запрос

    query.prepare("SELECT name  FROM moon WHERE name LIKE ? LIMIT 10");
    query.addBindValue(QVariant(ui->lineEdit->text() + "%"));
    query.exec();


как теперь работать с QCompleter? собственно нужен сам вывод на экран и при выборе размещение выбранного в lineEdit
Записан
mutineer
Гость
« Ответ #10 : Апрель 03, 2012, 20:34 »

QObject::connect(ui->lineEdit,SIGNAL(textEdited(QString s)), this, SLOT(QuickSearch(QString s)));

вызов неправильный, нужны только типы аргументов сигнала и слота
Записан
Bzzzuka
Гость
« Ответ #11 : Апрель 03, 2012, 20:49 »

как я поняла вы хотите сказать что правильнее так?

QObject::connect(ui->lineEdit,SIGNAL(textEdited(QString)), this, SLOT(QuickSearch(QString)));
Записан
mutineer
Гость
« Ответ #12 : Апрель 03, 2012, 20:51 »

как я поняла вы хотите сказать что правильнее так?

QObject::connect(ui->lineEdit,SIGNAL(textEdited(QString)), this, SLOT(QuickSearch(QString)));

именно
Записан
Bzzzuka
Гость
« Ответ #13 : Апрель 03, 2012, 20:54 »

может лучше вы расcкажbте как пользоваться QCompleter?
Записан
mutineer
Гость
« Ответ #14 : Апрель 03, 2012, 20:56 »

не расскажу ибо не пользовался никогда
Вот тут точно есть инфа о его работе
http://doc.crossplatform.ru/qt/4.7.x/html-qt/qcompleter.html
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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