Получить поле id как int записи в QSqlTableModel

я использую QSqlTableModel *modelcompleter, а затем с помощью QCompleter загрузить данные в qLineEdit *search

    connect(ui->btnSearch, SIGNAL(clicked()), SLOT(search()));
modelcompleter->setTable("cust");
modelcompleter->setEditStrategy(QSqlTableModel::OnManualSubmit);
modelcompleter->select();
QCompleter *searchCompleter = new QCompleter(modelcompleter);
searchCompleter->setCompletionColumn(1);
searchCompleter->setCaseSensitivity(Qt::CaseInsensitive);
ui->search->setCompleter(searchCompleter);

Я использую qlineEdit, чтобы нажать Enter на элементе, который я хочу выбрать:

 connect(ui->search, SIGNAL(returnPressed()), SLOT(search()));

функция

void search(){
cust_name = ui->search->text();
modelsearch->setTable("cust");
modelsearch->setEditStrategy(QSqlTableModel::OnManualSubmit);
modelsearch->setFilter(QString("cust_name like '%%1%'").arg(cust_name));
modelsearch->select();
qDebug() << modelsearch->record(0).value("id").toInt(); }

Я не понимаю, почему, но поиск модели, который в настоящее время устанавливает только 1 запись, которую он получает, когда я нажимаю Enter (QCompleter удостоверяется, что я отправляю полное ‘cust_name’). QDebug () выводит 0. Есть ли другой способ получить id из 'cust_name' соответствует поисковому запросу 'cust_name'

0

Решение

qDebug() << modelsearch->record(0).value("id").toInt();

вместо этого. я использовал

QSqlQueryModel *query = new QSqlQueryModel;
query->setQuery(QString("SELECT id from cust WHERE cust_name like '%%1%'").arg(cust_name));
qDebug() << query->record(0).value("id").toInt();

и теперь он получает идентификатор записи!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]