Bonjour à tous. J'ai crée une classe qui hérite de QDialog, dans laquelle j'ai positionné des QLineEdit. Par exemple, la fenetre affiche un champ id, nom, type... Le champ id (qui est un QLineEdit en ReadOnly) est rempli automatiquement par la fonction generateId :
Tout fonctionne normalement: c'est-à-dire que je peux creer un nouvel enregistrement. Mais le probleme c'est que lorsque je ré-ouvre la fenetre (de type QDialog) les champs du QLineEdit m'affichent à nouveau les données de l'enregistrement précédent ( y compris l'id). Or je voudrais réinitialiser tous les champs de saisies , sauf l'id pour lequel je veux afficher l'id du precedent enregistrement + 1 (ce qu'est censé faire la fonction generateId).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 inline int generateId(const QString &table) { QSqlQuery query; int id = 0; query.exec("SELECT MAX(idOrdi) FROM " + table); if(query.next()) id = query.value(0).toInt() + 1; return id; }
Je tiens à préciser que le nouvel id s'affiche mais seulement après fermeture puis ré-ouverture du programme.
Aussi je ne pense pas que mon probleme concerne les SGBD, donc je poste dans cette section (en espérant ne pas me tromper).
Merci d'avance pour votre aide.
Edit: Voici le code de la fiche en question :
Et le private SLOT ajouter():
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 OrdiAjout::OrdiAjout(QSqlTableModel *Model ) : QDialog() { model = Model; //Les lignes de saisies id = new QLineEdit; nom = new QLineEdit; type = new QLineEdit; num = new QLineEdit; d_achat = new QLineEdit; d_service = new QLineEdit; d_reforme = new QLineEdit; processeur = new QLineEdit; memoire = new QLineEdit; type_memoire = new QLineEdit; adr_ip = new QLineEdit; adr_mac = new QLineEdit; QVariant idd = generateId("ORDI"); id->setText(idd.toString()); //Line Edit en lecture seule id->setReadOnly(1); //Les masques de saisies d_achat->setInputMask("00/00/0000"); d_service->setInputMask("00/00/0000"); d_reforme->setInputMask("00/00/0000"); adr_ip->setInputMask("000.000.000.000"); adr_mac->setInputMask("000.000.000.000"); //Le Layout formulaire dans lequel seront les zones de saisies QFormLayout *formLayout = new QFormLayout; //Ajout dans le layout formLayout->addRow("Id :", id); formLayout->addRow("Nom :", nom); formLayout->addRow("Type :", type); formLayout->addRow("N° de serie :", num); formLayout->addRow("Date achat :", d_achat); formLayout->addRow("Date de Mise en service :", d_service); formLayout->addRow("Date de reforme :", d_reforme); formLayout->addRow("Processeur :", processeur); formLayout->addRow("Memoire :", memoire); formLayout->addRow("Type memoire :", type_memoire); formLayout->addRow("@ IP:", adr_ip); formLayout->addRow("@ MAC:", adr_mac); formLayout->addRow("Id garantie:", id_Garantie); formLayout->addRow("Id marque:", id_Marque); QPushButton *valider = new QPushButton("Valider"); QPushButton *fermer = new QPushButton("Fermer"); //Creation d'un layout principal (vertical) QVBoxLayout *layoutPrincipal = new QVBoxLayout; //Ajout du layout formulaire dans le layout principale layoutPrincipal->addLayout(formLayout); QWidget::connect(valider, SIGNAL(clicked()), this, SLOT(ajouter())); QWidget::connect(valider, SIGNAL(clicked()), this, SLOT(close())); //QWidget::connect(valider, SIGNAL(clicked()), this, SLOT(suppr())); QWidget::connect(fermer, SIGNAL(clicked()), this, SLOT(close())); layoutPrincipal->addWidget(valider); // Ajout du bouton layoutPrincipal->addWidget(fermer); // Ajout du bouton setLayout(layoutPrincipal); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 void OrdiAjout::ajouter() { QSqlQuery Query; Query.prepare("INSERT INTO ORDI(IdOrdi, NomOrdi, TypeOrdi, NumSerieOrdi, DateAchatOrdi, DateMiseService," "DateReforme, Processeur, Memoire, TypeMemoire, AdrIp, AdrMac)" "VALUES(:id, :nom, :type, :num, :d_achat, :d_service, :d_reforme, :processeur, :memoire, :type_memoire, :adr_ip, :adr_mac)"); Query.bindValue(":id", id->text()); Query.bindValue(":nom", nom->text()); Query.bindValue(":type", type->text()); Query.bindValue(":num", num->text()); Query.bindValue(":d_achat", d_achat->text()); Query.bindValue(":d_service", d_service->text()); Query.bindValue(":d_reforme", d_reforme->text()); Query.bindValue(":processeur", processeur->text()); Query.bindValue(":memoire", memoire->text()); Query.bindValue(":type_memoire", type_memoire->text()); Query.bindValue(":adr_ip", adr_ip->text()); Query.bindValue(":adr_mac", adr_mac->text()); Query.exec(); model->select(); }
Partager