I have a program like this
Qt Code:
  1. QList <S_AIS_DB_SHIP> cAISDataBase::addCurrentShipDataWithFilter(AIS_DB_FILTER filterType, QString searchKey)
  2. //void cAISDataBase::addCurrentShipDataWithFilter(AIS_DB_FILTER filterType,QString searchKey)
  3. {
  4. QList<S_AIS_DB_SHIP>aisList;
  5. QString type;
  6. if (filterType==ADF_MMSI)
  7. type=QString("mmsi");
  8. else if(filterType==ADF_AREAFILTER)
  9. type=QString("areaFilter");
  10. else if (filterType==ADF_STATUS)
  11. type=QString("status");
  12. else if (filterType==ADF_COG)
  13. type=QString("cog");
  14. else if (filterType==ADF_SOG)
  15. type=QString("sog");
  16. else if (filterType==ADF_IMO)
  17. type=QString("imo");
  18. else if (filterType==ADF_CALLSIGN)
  19. type=QString("callsign");
  20. else if (filterType==ADF_STERN)
  21. type=QString("dim_stern");
  22. else if (filterType==ADF_BOW)
  23. type=QString("dim_bow");
  24. else if (filterType==ADF_STARBOARD)
  25. type=QString("dim_starboard");
  26. else if (filterType==ADF_PORT)
  27. type=QString("dim_port");
  28. else if (filterType==ADF_WIDTH)
  29. type=QString("width");
  30. else if (filterType==ADF_LENGTH)
  31. type=QString("length");
  32. else if (filterType==ADF_NAME)
  33. type=QString("name");
  34.  
  35. cMYSQLDB *mysqldb=createDbInstance();
  36. if(mysqldb->open()){
  37. MYSQL_RES *result;
  38. MYSQL_ROW row;
  39. QString query="SELECT *FROM SKM_T_AIS_CURRENTSHIPLIST where" +type+ " ='" +searchKey +";";
  40.  
  41. result=mysqldb->query(query);
  42. if (result){
  43. S_AIS_DB_SHIP dbShip;
  44. while ((row=mysql_fetch_row(result))!=NULL){
  45. S_AIS_DB_STATUSDATA statusDataTemp;
  46. statusDataTemp.mmsi = QString(row[0]);
  47. statusDataTemp.lat = QString(row[1]).toDouble();
  48. statusDataTemp.lon = QString(row[2]).toDouble();
  49.  
  50. statusDataTemp.sog = QString(row[3]).toDouble();
  51. statusDataTemp.cog = QString(row[4]).toDouble();
  52. statusDataTemp.lastUpdate=QString(row[5]);
  53. statusDataTemp.status=QString(row[6]);
  54.  
  55. S_AIS_DB_SHIPINFO shipInfoDataTemp;
  56.  
  57. shipInfoDataTemp.mmsi=QString(row[7]);
  58. shipInfoDataTemp.IMO = QString(row[8]);
  59. shipInfoDataTemp.callsign=QString(row[9]);
  60. shipInfoDataTemp.name = QString(row[10]);
  61. shipInfoDataTemp.width=QString(row[11]).toDouble();
  62. shipInfoDataTemp.length=QString(row[12]).toDouble();
  63. shipInfoDataTemp.dim_port=QString(row[13]).toInt();
  64. shipInfoDataTemp.dim_starboard=QString(row[14]).toInt();
  65. shipInfoDataTemp.dim_bow=QString(row[15]).toInt();
  66. shipInfoDataTemp.dim_stern=QString(row[16]).toInt();
  67. aisList.append(dbShip);
  68. }
  69. }
  70. mysqldb->closeRslt(result);
  71. mysqldb->close();
  72. }
  73. delete mysqldb;
  74. }
To copy to clipboard, switch view to plain text mode 
this program to filter tableWidget items

Qt Code:
  1. void AIS::on_lineEdit_textChanged(QString )
  2. {
  3. QList<S_AIS_DB_SHIP>aislist;
  4. aislist=m_db->addCurrentShipDataWithFilter(filterType,searchKey);
  5. for (int i=0;i<aislist.count();i++){
  6. int curRow =ui->tableWidget->rowCount();
  7. ui->tableWidget->insertRow(curRow);
  8. ui->tableWidget->setItem(curRow,0, new QTableWidgetItem (aislist.at(i).statusData.mmsi));
  9. ui->tableWidget->setItem(curRow,1, new QTableWidgetItem (aislist.at(i).shipInfo.IMO));
  10. ui->tableWidget->setItem(curRow,2, new QTableWidgetItem (aislist.at(i).shipInfo.name));
  11. ui->tableWidget->setItem(curRow,4, new QTableWidgetItem (QString::number(aislist.at(i).statusData.sog)));
  12. ui->tableWidget->setItem(curRow,5, new QTableWidgetItem (QString::number(aislist.at(i).statusData.cog)));
  13. ui->tableWidget->setItem(curRow,6, new QTableWidgetItem (QString::number(aislist.at(i).statusData.lat)));
  14. ui->tableWidget->setItem(curRow,7, new QTableWidgetItem (QString::number(aislist.at(i).statusData.lon)));
  15. }
  16. searchKey = ui->lineEdit->text();
  17.  
  18. if(ui->comboBox->currentText() == "MMSI"){
  19. filterType = ADF_MMSI;
  20. }
  21. else if(ui->comboBox->currentText() == "IMO"){
  22. filterType = ADF_IMO;
  23. }
  24. else if(ui->comboBox->currentText() == "Name"){
  25. filterType = ADF_NAME;
  26. }
  27. m_db->addCurrentShipDataWithFilter(filterType, searchKey);
  28. }
To copy to clipboard, switch view to plain text mode 
And this is a function that call the function above

My program exit when I type something in lineEdit...
I don't know what's wrong with my program??
If i try to debug it, it displays that the data is not synchronous...
Is my function not called properly???\
Really need help...