Qt4: QTableView, QSqlQueryModel, SQLite3 и странный вывод (Чертовщина с выводом результатов.)

Модератор: Модераторы разделов

Civil
Сообщения: 199
ОС: Gentoo Current

Qt4: QTableView, QSqlQueryModel, SQLite3 и странный вывод

Сообщение Civil »

Есть маленькая программка. Она хранит вопросы и ответы в SQLite3. Есть 2 QTableView - один с вопросами, другой с ответами. Есть текстовое поле для ввода данных. При изменении текста вызывается функция findText:

Код: Выделить всё

void student::findText(const QString & text)
{
    QString newText=text;
    if (weShouldIgnoreSpaces())
        newText.replace(QString(" "),QString("%"));
    modelQuestion->setQuery("SELECT * FROM Question WHERE QuestionText LIKE '%"+text+"%'  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);
<...>
}

(Часть кода вырезана за ненадобностью).

Всё вроде-бы работает, но если ввести "OSI HUBa", а потом удалить последнюю букву - получается забавная гадость:


Если ввести всё правильно выдаётся:


Аналогичного результата можно достичь добавив:

Код: Выделить всё

    delete modelQuestion;
    modelQuestion = new QSqlQueryModel(0);
    questionOutput->setModel(modelQuestion);

Где-нибудь в начале функции findText.
У меня смутное ощущение, что я где-то сильно накосячил, но не понимаю где.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
"Кто управляет прошлым, тот управляет будущим; кто управляет настоящим, тот управляет прошлым" (Д. Оруэлл "1984")
Спасибо сказали:
Аватара пользователя
_GV
Сообщения: 107
Статус: секта красных утюгов
ОС: Gentoo linux

Re: Qt4: QTableView, QSqlQueryModel, SQLite3 и странный вывод

Сообщение _GV »

А не связано ли это с

if (weShouldIgnoreSpaces())
newText.replace(QString(" "),QString("%"));

В этом случае подойдут и "OSIHUBa" и "OSI qwerty HUBa"
Спасибо сказали:
Civil
Сообщения: 199
ОС: Gentoo Current

Re: Qt4: QTableView, QSqlQueryModel, SQLite3 и странный вывод

Сообщение Civil »

_GV
Нет, не из-за этого. От отсутствия этого кода меняется только сам запрос. Достаточно ввести любой правильный, затем добавить символ, такой что вернётся 0 ответов. После этого удаляем последний символ и получаем то же самое.
"Кто управляет прошлым, тот управляет будущим; кто управляет настоящим, тот управляет прошлым" (Д. Оруэлл "1984")
Спасибо сказали: