Фильтрация запросов по QLineEdit и обновление QSqlQueryModel

Я получил lineExdit и tableView, я хочу живое обновление tableView, основанное на наборе текста в lineEdit.

void updateTableView(QString *st)
{
    QSqlQuery * qry = new QSqlQuery(mydb);

    qry->prepare("select * from Poems where Title like ?%");
    qry->addBindValue(st);
    qry->exec();

1 ответ

Решение

Вы злоупотребляете указателями, когда это не нужно, например, QSqlQuery создает его с помощью динамической памяти, и вы не устраняете его, то же самое с QString,

Предполагая, что QTableView модель QSqlQueryModel тогда вы должны сделать следующее:

...
// constructor
    connect(your_le, &QLineEdit::textChanged, this, &YourClass::updateTableView);
...

void updateTableView(const QString & st)
{
    QSqlQuery query(mydb);
    query.prepare("select * from Poems where Title like ?");
    query.addBindValue(QString("%1%").arg(st));
    query.exec();
    your_QSqlQueryModel->setQuery(query);
}
Другие вопросы по тегам