Russian Qt Forum

Qt => Базы данных => Тема начата: ymb от Октябрь 11, 2017, 09:48



Название: Поиск строки в QTableView
Отправлено: ymb от Октябрь 11, 2017, 09:48
Существует ли в QT поиск строки по значению поля типа locate в С++ Builder?
Искал в классах QSqlQuery, QSqlQueryModel, QTableView.
Может плохо искал?
Подскажите кто знает.
 


Название: Re: Поиск строки в QTableView
Отправлено: ssoft от Октябрь 11, 2017, 10:29
Наверное это QModelIndexList QAbstractItemModel::match ( ... ) const


Название: Re: Поиск строки в QTableView
Отправлено: ymb от Октябрь 12, 2017, 09:21
Не работает поиск "match".

Есть БД PostgreSQL.
Таблица test_1.
Поля id int,name char(50).

QSqlDatabase db;
QSqlQuery *query;
QSqlQueryModel *model;
...

db = QSqlDatabase::addDatabase("QPSQL");
...
query = new QSqlQuery(db);
model = new QSqlQueryModel;
ui->tableView->setModel(model);
...

// Заполнение таблицы
query->exec("select id,name from test_1 order by id");
model->setQuery(*query);
------------------------------------------
select,delete,insert,update работают.

Поиск перебором строк тоже работает.
Теперь пытаюсь организовать поиск с помощью match.

QModelIndexList indexList;
indexList = model->match(ui->tableView->model()->index(1,1),Qt::DisplayRole,name,1,0);

Возвращает пустой список. Хотя name существует и простым перебором находится.
Может дело в параметрах?