Problème avec QSqlTableModel : la fenêtre se ferme quand je l'appelle
Bosoir à tous,
Voilà j'ai un petit soucis dans mon code. Je souhaite afficher un tableau issu d'une base de donnée (ca c bon) et pouvoir selectionner une ligne du tableau pour pouvoir ulterieurement la modifier ou la supprimer. Mais déjà récupérer les infos de la ligne me pose problème.
Voici mon code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| ...
QSqlTableModel *model = new QSqlTableModel;
model->setTable("Clients");
model->select();
model->removeColumn(0);
QTableView *view = new QTableView;
view->setModel(model);
view->setSelectionBehavior(QAbstractItemView::SelectRows);
// Layout : boutons du bas (ajouter, quitter...)
modifier = new QPushButton("&Modifier");
annuler = new QPushButton("&Annuler");
QHBoxLayout *boutonsLayout = new QHBoxLayout;
boutonsLayout->setAlignment(Qt::AlignLeft);
boutonsLayout->addWidget(modifier);
boutonsLayout->addWidget(annuler);
QVBoxLayout *layoutPrincipal = new QVBoxLayout;
layoutPrincipal->addWidget(view);
layoutPrincipal->addLayout(boutonsLayout);
QWidget *zoneCentrale = new QWidget;
zoneCentrale->setLayout(layoutPrincipal);
setCentralWidget(zoneCentrale);
// Connexions des signaux et des slots
connect(annuler, SIGNAL(clicked()), this, SLOT(menublanc()));
connect(modifier, SIGNAL(clicked()), this, SLOT(modifierClientBdd()));
... |
Et le slot modifierClientBdd()
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| void FenPrincipale::modifierClientBdd()
{
QItemSelectionModel *selection = view->selectionModel();
QModelIndexList listeSelections = selection->selectedIndexes();
QString elementsSelectionnes;
for (int i = 0 ; i < listeSelections.size() ; i++)
{
QVariant elementSelectionne = model->data(listeSelections[i], Qt::DisplayRole);
elementsSelectionnes += elementSelectionne.toString() + "<br />";
}
QMessageBox::information(this, "Eléments sélectionnés", elementsSelectionnes);
} |
Le code compile, mais qd je clique sur le bouton "modifier" le programme plante...
Où est mon erreur??
Merci d'avance