setfilter在许多的IDE中都已经支持了,QT也不例外。在操作数据库中QSqlQueryModle,QSqlTableModle都对齐进行了支持。那么我们可以用它来实现过滤查询。
一、完全匹配查询
1、普通字符串查询
普通字符串,当使用参数的时候必须注意在参数前后加上单引号:
tmodel->setFilter(QObject::tr(“dCode=’%1’”).arg(str));
2、数值查询
tmodel->setFilter(QObject::tr(“dCount=%1”).arg(cunt));
3、时间查询
时间查询尤其在QT中的QDataTime要将其转换为字符串后进行查询,查询语法与普通字符相同。
二、模糊查询
1、首字模糊查询
QString filterstr=QObject::tr(“cName like ‘%1%’”).arg(arg1);
tmodel->setFilter(filterstr);
2、任意字模糊查询
QString filterstr=QObject::tr(“cName like ‘%%1%’”).arg(arg1);
tmodel->setFilter(filterstr);
3、两个并列条件模糊查询
QString filterstr=QObject::tr("(cName like ‘%1%’) AND (cPhone like ‘%1%’)").arg(arg1);
tmodel->setFilter(filterstr);
4、两个或条件模糊查询
QString filterstr=QObject::tr("(cName like ‘%1%’) OR (cPhone like ‘%1%’)").arg(arg1);
tmodel->setFilter(filterstr);