Je programme une sorte de carnet d'adresses. Sur le côté gauche de mon application, j'ai un QListView pour afficher les noms de mes contacts. Sur le côté droit de ma demande, j'ai un formulaire pour taper les informations (par exemple, le nom, l'adresse, le numéro de téléphone) de mes contacts. Je stocke les données de mes contacts dans un QSqlTableModel. J'utilise ma QListView pour afficher une colonne de mon QSqlTableModel.Comment sélectionner un élément dans un QListView qui correspond au dernier enregistrement inséré du QSqlTableModel sous-jacent?
Ma question est la suivante: Comment puis-je sélectionner automatiquement l'élément dans mon QListView qui correspond au dernier contact inséré dans mon QSqlTableModel?
Voilà comment je créé mon modèle:
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("datenbank.db");
model = new QSqlTableModel(this, db);
model->setTable("demodaten");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->setSort(0, Qt::AscendingOrder);
model->select();
view->setModel(model);
view->setModelColumn(0);
Voici comment ajouter un nouveau record à mon modèle:
QSqlRecord record = model->record();
for(int i = 0; i<record.count(); i++){
record.setValue(i, "");
}
record.setValue("codenummer", p.getCodeNummer());
record.setValue("vorname", p.getVorname());
record.setValue("nachname", p.getNachname());
record.setValue("geburtsdatum", p.getGeburtsdatum());
model->insertRecord(-1, record);
model->submitAll();
Salut Serge, merci beaucoup pour ton aide! Mais malheureusement, cela ne fonctionne pas. Toujours le premier élément de mon QListView est sélectionné.Ce qui est bizarre à côté de cela est que on_rowsInserted() semble être appelé deux fois lorsqu'une nouvelle ligne est insérée dans mon QSqlTableModel. Dans le premier appel, start est toujours l'index du dernier élément de ma QListView. Dans le second appel, il est toujours 0. – Tom
"on_rowsInserted() semble être appelé deux fois" ne sonne pas juste pour moi; Je devine que vous auriez besoin de poster une partie de votre code car la cause de votre problème est dans les détails de comment vous initialisez le modèle et comment de nouvelles lignes sont insérées –
Salut Serge, j'ai ajouté du code. Peut-être que vous avez maintenant une idée de comment résoudre mon problème. Merci d'avance! – Tom