Я пишу небольшое приложение для Symbian и у меня проблемы с QDataWidgetMapper. Это код:
void Widget::bindToData(){
databaseManager = new DatabaseManager();
dataMapper = new QDataWidgetMapper();
dataMapper->setSubmitPolicy(QDataWidgetMapper::AutoSubmit);
dataMapper->setModel(databaseManager->getTableModel());
dataMapper->addMapping(ui->debugLabel, databaseManager->getTableModel()->fieldIndex("item")); //ko
QSqlQuery q;
bool ret = q.exec("SELECT * FROM expense");
if (!ret){
databaseManager->showDebugMsg(q.lastError().text());
}
while (q.next()) {
QString item = q.value(1).toString();
databaseManager->showDebugMsg(item); //ok
}
dataMapper->toFirst();
}
До того, как я заполнил базу данных какой-нибудь тестовой строкой, и я уверен, что она работала, потому что
databaseManager-> showDebugMsg (пункт);
покажи мне правильные данные. Но сопоставление не удается. GetTableModel довольно прост:
QSqlTableModel * DatabaseManager::getTableModel(){
tableModel->select();
return tableModel;
}
и вот он - конструктор DatabaseManager:
DatabaseManager::DatabaseManager(){
debugMsgBox = new QMessageBox();
this->deleteDB();
this->openDB();
this->createExpenseTable();
this->insertTestExpense("test", 11.0);
tableModel = new QSqlTableModel();
tableModel->setTable("expense");
}
Поскольку insertTestExspense работает, я думаю, что проблема может быть в setTable () ... но я не вижу, что мне не хватает ...
Есть идеи?