А в чем проблема? В зависимости от чекбоксов и текстовых полей добавляем в WHERE нужные условия, например:
QString sql("SELECT * FROM table WHERE");
if (Field1.isChecked()) {
if (!Field1Min.text().isEmpty())
sql += " (field1 > :Field1Min)";
if (!Field1Max.text().isEmpty())
sql += " (field1 < :Field1Max)";
}
...
QSqlQuery query(database);
query.prepare(sql);
if (Field1.isChecked()) {
if (!Field1Min.text().isEmpty())
query.bindValue("Field1Min", Field1Min.text().toInt());
if (!Field1Max.text().isEmpty())
query.bindValue("Field1Max", Field1Max.text().toInt());
}
...
if (!query.exec()) {
...
}
P.S. AND'ы в SQL условии сами проставите...