Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Bzzzuka от Апрель 03, 2012, 17:55



Название: Интуитивный поиск
Отправлено: Bzzzuka от Апрель 03, 2012, 17:55
Препод заказал сделать в проге интуитивный поиск по базе типа вот такого. Я пуста ??? у кого-нибудь есть какие нибудь идеи?
(http://www.cyberforum.ru/attachment.php?attachmentid=140064&stc=1&thumb=1&d=1333463535)


Название: Re: Интуитивный поиск
Отправлено: V1KT0P от Апрель 03, 2012, 18:31
Препод заказал сделать в проге интуитивный поиск по базе типа вот такого. Я пуста ??? у кого-нибудь есть какие нибудь идеи?
(http://www.cyberforum.ru/attachment.php?attachmentid=140064&stc=1&thumb=1&d=1333463535)

Я думаю картинка слишком большая.
Если я понял то что увидел в горстке пикселей то банально выводи все строки в которых есть искомая подстрока. Банально до предела.


Название: Re: Интуитивный поиск
Отправлено: Bzzzuka от Апрель 03, 2012, 18:35
Ну так расскажите как это делается если вы знаете и это так банально.


Название: Re: Интуитивный поиск
Отправлено: V1KT0P от Апрель 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;
}


Название: Re: Интуитивный поиск
Отправлено: Bzzzuka от Апрель 03, 2012, 18:49
а как это к базе применить?


Название: Re: Интуитивный поиск
Отправлено: V1KT0P от Апрель 03, 2012, 18:56
а как это к базе применить?
Какие будут вопросы, такие и ответы.
Все зависит от базы данных, но в общих чертах:
Код
SQL
SELECT name FROM my_table WHERE name LIKE('%search_text%');


Название: Re: Интуитивный поиск
Отправлено: Bzzzuka от Апрель 03, 2012, 19:03
Ну так обратите внимание на мой ник и на то что подфорум называется "Вопросы новичков"


Название: Re: Интуитивный поиск
Отправлено: V1KT0P от Апрель 03, 2012, 19:08
Ну так обратите внимание на мой ник и на то что подфорум называется "Вопросы новичков"
Ну так я и в моих ответах вообще ничего сложного нету. А вот как тебе могут помочь если ты пишешь не подробный вопрос. Надо было сразу начинать с того что данные у тебя в базе, упомянуть какая база данных, как ты с ней взаимодействуешь, на чем пишешь =).


Название: Re: Интуитивный поиск
Отправлено: Странник от Апрель 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);


Название: Re: Интуитивный поиск
Отправлено: Bzzzuka от Апрель 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


Название: Re: Интуитивный поиск
Отправлено: mutineer от Апрель 03, 2012, 20:34
QObject::connect(ui->lineEdit,SIGNAL(textEdited(QString s)), this, SLOT(QuickSearch(QString s)));

вызов неправильный, нужны только типы аргументов сигнала и слота


Название: Re: Интуитивный поиск
Отправлено: Bzzzuka от Апрель 03, 2012, 20:49
как я поняла вы хотите сказать что правильнее так?

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


Название: Re: Интуитивный поиск
Отправлено: mutineer от Апрель 03, 2012, 20:51
как я поняла вы хотите сказать что правильнее так?

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

именно


Название: Re: Интуитивный поиск
Отправлено: Bzzzuka от Апрель 03, 2012, 20:54
может лучше вы расcкажbте как пользоваться QCompleter?


Название: Re: Интуитивный поиск
Отправлено: mutineer от Апрель 03, 2012, 20:56
не расскажу ибо не пользовался никогда
Вот тут точно есть инфа о его работе
http://doc.crossplatform.ru/qt/4.7.x/html-qt/qcompleter.html