PDA

View Full Version : QTableView and QSqlQueryModel. Strange problems



Civil
3rd April 2008, 19:42
I'm writing a small utility. It have QTableView connected with QSqlQueryModel. DB is SQLite3. When somebody inputs text calls findText:

void student::findText(const QString & text)
{
QString newText=text;
if (weShouldIgnoreSpaces())
newText.replace(QString(" "),QString("%"));
modelQuestion->setQuery("SELECT * FROM Question WHERE QuestionText LIKE '%"+newText+"%' ORDER BY idQuestion");
if (modelQuestion->lastError().isValid())
qDebug() << modelQuestion->lastError();
modelQuestion->setHeaderData(0, Qt::Horizontal, tr("Question ID"));
modelQuestion->removeColumns(1,2);
modelQuestion->setHeaderData(1, Qt::Horizontal, tr("Question Text"));
modelQuestion->removeColumns(2,2);
<...>
}
(it is part of code).

It seems that it works, but if you write "OSI HUBa" and then delete "a" you'll get what is in attach1 instead of attach2.
If I add

delete modelQuestion;
modelQuestion = new QSqlQueryModel(0);
questionOutput->setModel(modelQuestion);
somewhere before modelQuestion->setQuery it works normaly. But I don't think that it is normal behavior.
I think the problem is in my code. But I don't know exactly where.
Any ideas?