Hello friends,

in my app I have three comboboxes, which I use as filter for my model.

Qt Code:
  1. QString str1 = combo1->currentText();
  2. QString str2 = combo2->currentText();
  3. QString str3 = combo3->currentText();
  4.  
  5. QString filter1 = "field1='"+str1+"'";
  6. QString filter2 = "field2='"+str2+"'";
  7. QString filter3 = "field3= convert (datetime,'"+str3+"',120)";
  8.  
  9.  
  10. if (str1!="" && str2 != "" && str3 != "")//111
  11. model->setFilter( filter1 +" and "+ filter2 +" and "+filter3);
  12. else if (str1=="" && str2 != "" && str3 != "")//011
  13. model->setFilter( filter2 +" and "+filter3);
  14. else if (str1=="" && str2 != "" && str3 == "")//010
  15. model->setFilter( filter2 );
  16. else if (str1=="" && str2 == "" && str3 != "")//001
  17. model->setFilter( filter3 );
  18. else if (str1!="" && str2 != "" && str3 == "")//110
  19. model->setFilter( filter1 +" and "+ filter2 );
  20. else if (str1!="" && str2 == "" && str3 != "")//101
  21. model->setFilter( filter1 +" and "+ filter3 );
  22. else if (str1!="" && str2 == "" && str3 == "")//100
  23. model->setFilter( filter1 );
  24. else
  25. {
  26. model->setTable(tableName);
  27. model->select();
  28. }
To copy to clipboard, switch view to plain text mode 

As you can see I also give my combo a <""> for no filter, but I have always to check because a when I set a filter and when a filter has a "" it does not appear in my table.

So when I have only 3 filter I have to check 2^3 choises that is 8 or four filter with 2^4=16 that is much coding. Is there a elegant way to setting the filters???