通过QLineEdit过滤查询并更新QSqlQueryModel

时间:2018-07-31 16:42:42

标签: c++ qt sqlite qt5 qsqlquerymodel

我有一个lineExdit和一个tableView,我希望在lineEdit中键入文本来实时更新tableView。

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

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

1 个答案:

答案 0 :(得分:2)

您在不必要的时候滥用了指针,例如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);
}