J'écris une petite application Symbian et j'ai des problèmes avec QDataWidgetMapper. Voici le code:Qt 4 Sqlite, problème avec 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();
}
Avant d'avoir remplir la base de données avec une ligne de test et je suis sûr que cela a fonctionné parce
databaseManager-> showDebugMsg (point);
Montrez-moi les bonnes données. Mais le mappage échoue. Le getTableModel est assez simple:
QSqlTableModel * DatabaseManager::getTableModel(){
tableModel->select();
return tableModel;
}
et ici il est le constructeur DatabaseManager:
DatabaseManager::DatabaseManager(){
debugMsgBox = new QMessageBox();
this->deleteDB();
this->openDB();
this->createExpenseTable();
this->insertTestExpense("test", 11.0);
tableModel = new QSqlTableModel();
tableModel->setTable("expense");
}
Depuis le insertTestExspense fonctionne, je pense que le problème peut être dans le setTable() ... mais je ne peux ne vois pas ce qui me manque ...
Une idée?
Il a travaillé. Mais pourquoi ai-je besoin de spécifier le paramètre "texte"? La documentation est un peu énigmatique ici http://doc.qt.nokia.com/latest/qdatawidgetmapper.html#addMapping-2 il dit "ajoute la possibilité de spécifier la propriété à utiliser" ... mais la propriété de quel objet? – Segolas
addMapping permet de spécifier le mappage entre un widget et votre section de modèle. PropertyName paramètre permet de définir une propriété d'un widget qui devrait être utilisé pour le mappage –
ok, merci encore. – Segolas