Russian Qt Forum

Qt => Базы данных => Тема начата: алексей от Январь 28, 2009, 11:18



Название: Инкрементальный поиск в QtableView
Отправлено: алексей от Январь 28, 2009, 11:18
Здравствуйте !! Кто нибудь может подсказать, как организовать инкрементальный поиск в QtableView. Т.е. пользователь в эдите вводит символы запроса, а курсор, или можно просто выделением, передвигается по мере соответствия к необходимой записи, причем остальные записи не исчезают. Смотрел примеры QSortFilterProxyModel но там тоже поиск работает как фильтр - в конце концов остается только одна подходящая по условиям запись т.е. тоже самое что делает метод setFilter в QSqlTableModel.

Код:
model_data->setFilter("NAIM STARTING WITH '"+(ui.lineEdit->text()+"' AND ID= "+QString::number(dat_->baza_id)));

Заранее спасибо.


Название: Re: Инкрементальный поиск в QtableView
Отправлено: алексей от Февраль 01, 2009, 20:39
нда, в QtableView вообще наверное никак, а в QTableWidget - только нашел через findItems. Вот может кому пригодится....

Код:
void for_test::on_lineEdit_textChanged(const QString &)
{
if (ui.lineEdit->text()== "")
{
ui.tableWidget->setCurrentCell(0,0);
ui.tableWidget->clearSelection();
return;
}

QTableWidgetItem *item;
QList<QTableWidgetItem*> found = ui.tableWidget->findItems(ui.lineEdit->text(), Qt::MatchContains);

 foreach (item, found)
 {
if (item->column()==0) //подсвечиваем 0-й столбец
{
ui.tableWidget->clearSelection();
ui.tableWidget->setItemSelected(item, true);
ui.tableWidget->setCurrentCell(item->row(),item->column());
break;
}

  }

}