Имею следующий код:
C++ (Qt)
model = new QSqlTableModel(this,DB);
model->setTable("test");
model->setSort(0,Qt::AscendingOrder);
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->setFilter("id = "+QString::number(ID));
model->select();
mapper = new QDataWidgetMapper();
mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit);
mapper->setModel(model);
mapper->addMapping(ui->lineEdit_1,model->fieldIndex("n1"));
...
mapper->addMapping(ui->lineEdit_10,model->fieldIndex("n2"));
mapper->toFirst();
Плюс ещё есть ComboBox, которым я выбираю первичный ключ (ID). Далее в соответствии с ним на визуальные компоненты должно выводиться содержимое таблицы (каждому значению ключа соответствует единственная запись в таблице).
Поля в таблице имеют типы VarChar и Int.
Проблема заключается в том, что когда я при помощи КомбоБокса перехожу на строку с пустыми полями, в ЛайнЭдитах, которым соответствуют поля с типом Int, остаются значения с прошлого раза. То есть содержимое ЛайнЭдита не стирается. Хотя есть тип поля - VarChar, всё работает нормально.
Также в окно Дебага я постоянно получаю предупреждения:
Object::connect: No such signal QObject::dataChanged(QModelIndex,QModelIndex) in itemviews\qdatawidgetmapper.cpp:382
Что это?
Также мне непонятнен следующий вопрос. После различных манипуляций с таблицей меняется порядок строк в ней. Например, я заполняю таблицу строками с первичными ключами, выстроенными по возрастанию. Потом я работаю с таблицей (добавляю, удаляю значения) и порядок строк меняется (проверяю командой SELECT * FROM). Это какой-то глюк? Или же никто не гарантирует порядок хранения строк?