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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Инкрементальный поиск в QtableView  (Прочитано 6233 раз)
алексей
Гость
« : Январь 28, 2009, 11:18 »

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

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

Заранее спасибо.
Записан
алексей
Гость
« Ответ #1 : Февраль 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;
}

  }

}

Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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