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
) {
if (weShouldIgnoreSpaces())
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);
<...>
}
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);
<...>
}
To copy to clipboard, switch view to plain text mode
(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;
questionOutput->setModel(modelQuestion);
delete modelQuestion;
modelQuestion = new QSqlQueryModel(0);
questionOutput->setModel(modelQuestion);
To copy to clipboard, switch view to plain text mode
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?
Bookmarks