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
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.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
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
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
 
#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.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
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
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
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;
}
C'est pas vraiment Top, donc voila ce que j'aimerais :

  • 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 :

  1. Ma méthode pour afficher la FenLogin ne fonctionne pas correctement, comment faire ?
  2. dans quelle classe vaut-il mieux faire le test des identifiants ?
  3. 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,