Bonjour tout le monde.
Je travail actuellement sur un projet école. Pour ce projet, on me demande avant l'apparition de la fenêtre principale, d'ajouter une fenêtre d'authentification.
Je ne sais pas comment m'y prendre pour faire cela correctement.
Après plusieurs essais je suis arrivé à cette conclusion :
- Appeler FenetrePrincipale dans le main
- Dans le constructeur de FenetrePrincipale appeler une méthode "ShowLoginDialog"
- Dans cette méthode faire FenetreLogin->exec();
ce qui donne :
main.cpp
FenPrincipale.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include <QtGui/QApplication> #include "fenprincipale.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); FenPrincipale w; w.show(); return a.exec(); }
FenPrincipale.cpp
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 #ifndef FENPRINCIPALE_H #define FENPRINCIPALE_H #include <QMainWindow> #include "fenlogin.h" namespace Ui { class FenPrincipale; } class FenPrincipale : public QMainWindow { Q_OBJECT public: explicit FenPrincipale(QWidget *parent = 0); ~FenPrincipale(); private slots: private: Ui::FenPrincipale *ui; FenLogin *fenLogin; void showLoginDialog(); }; #endif // FENPRINCIPALE_H
FenLogin.h
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 #include "fenprincipale.h" #include "ui_fenprincipale.h" #include <QDebug> FenPrincipale::FenPrincipale(QWidget *parent) : QMainWindow(parent), ui(new Ui::FenPrincipale) { fenLogin = new FenLogin(this); showLoginDialog(); ui->setupUi(this); } void FenPrincipale::showLoginDialog() { qDebug()<<"execution"; fenLogin->exec(); } FenPrincipale::~FenPrincipale() { delete ui; }
FenLogin.cpp
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 #ifndef FENLOGIN_H #define FENLOGIN_H #include <QDialog> #include <QDesktopWidget> namespace Ui { class FenLogin; } class FenLogin : public QDialog { Q_OBJECT public: explicit FenLogin(QWidget *parent = 0); ~FenLogin(); signals: private slots: void on_connexion_Login_cliked(); void on_quitter_Login_cliked(); private: Ui::FenLogin *ui; QString id,password; void initFenetre(); }; #endif // FENLOGIN_H
C'est pas vraiment Top, donc voila ce que j'aimerais :
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 #include "fenlogin.h" #include "ui_fenlogin.h" #include <QDebug> FenLogin::FenLogin(QWidget *parent) : QDialog(parent), ui(new Ui::FenLogin) { initFenetre(); } void FenLogin::on_connexion_Login_clicked() { /*CONNEXION BDD A VENIR*/ qDebug()<<"Connexion"; this->close(); } void FenLogin::on_quitter_Login_cliked() { qDebug()<<"quitter"; this->close(); //Fermeture de l'application } void FenLogin::initFenetre() { ui->setupUi(this); /* LOGO APTERIX */ QPixmap titre(QCoreApplication::applicationDirPath() + "/Logo/APTERIXV2.png"); ui->apterixV2_Label->setPixmap(titre); /* Positionnement de la fenetre */ QDesktopWidget *widget = QApplication::desktop(); int desktop_width = widget->width(); int desktop_height = widget->height(); int x = desktop_width /2 - width()/2 -8; int y = desktop_height /2 - height()/2 -25; move(QPoint(x,y)); ui->id_Login->setFocus(Qt::OtherFocusReason); } FenLogin::~FenLogin() { delete ui; }
- Affichage FenLogin au demarage
- Rentrer les identifiants
- Si après verification dans la BDD, c'est correcte, on rentre sur la FenPrincipale, sinon on affiche une erreur et on reste sur FenLogin
- Ajouter un bouton " Déconnexion " sur la FenPrincipale, et à nouveau refaire le même " chemin "
Pour cela j'ai plusieurs questions :
- Ma méthode pour afficher la FenLogin ne fonctionne pas correctement, comment faire ?
- dans quelle classe vaut-il mieux faire le test des identifiants ?
- Pourais-je par la suite, rappelez cette méthode lorsque j'ajouterais le bouton déconnexion ?
Excusez moi de toutes ces questions, si je parais un peu abruti![]()
je ne suis pas venu toute de suite, cela fait 2 jours que je planche dessus, impossible d'arriver à quelque chose de correcte
cordialement Florian,
Partager