IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Comment ouvrir un fenêtre parmi d'autre selon l'identifiant ?

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    élève ingenieur
    Inscrit en
    Août 2015
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : élève ingenieur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2015
    Messages : 69
    Par défaut Comment ouvrir un fenêtre parmi d'autre selon l'identifiant ?
    Bonsoir .

    je suis débutant en C++,et je suis entrain de developper une application en c++ avec Qt.

    svp la premiére fenetre de ma application c'est pour s'identifier.(on trouve dedans deux QLineEdit :User et Password).

    je veux faire ceci:
    a partir de user et password saisie par l'utulisateur,si vous etes administrateur(stocké dans la table login d'une base de donné) alors un objet de class FenetreAdmin s'ouvre (c'est une fenetre contenant des widgets spécifié aux adminstrateur.).

    si vous étes un patient(stocké dans la table Patient d'une base de donné) alors un objet de class FenetrePatient s'ouvre (c'est une fenetre contenant des widgets spécifié aux patient.).

    et enfin si vous étes un medecin (stocké dans la table medecin d'une base de donné) alors un objet de class FenetreMedecin s'ouvre (c'est une fenetre contenant des widgets spécifié aux Medecin.).

    pour cela ,j'ai creé un slot appelé cliqueBoutonConnecter(),qui sera appelé lors de clique sur le bouton connecter aprés le saisie de user et password.
    j'ai creé encore trois méthodes :connecterTantQueAdmin() , connecterTantQueMedecin() , connecterTantQuePatient().

    Donc ,aprés le saisie de pwd et user ,j'ai creé un objet de class Login qui stocke les deux textes de QLineEdit et on teste si il est administrateur ,medecin ou patient via les trois methodes precedentes.

    voici svp la fichier login.h(declaration de classe Login )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class Login
    {
    private:
        QString user;
        QString psw;
     
    public:
        Login(QString userd,QString pswd);
        bool connecterTantQueAdmin();
        bool connecterTantQuePatient();
        bool connecterTantQueMedecin();
    };
    et la fichier login.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
     Login::Login(QString userd,QString  pswd):user(userd),psw(pswd)
    {
     
    }
     
    bool Login::connecterTantQueAdmin()
    {
        QSqlQuery query;
        query.prepare("select * from LOGUIN where USER='"+user+"'and PWD='"+psw+"' ");
        return query.exec();
    }
     
    bool Login::connecterTantQueMedecin()
    {
     
        QSqlQuery query;
        return(query.exec("select * from MEDECIN where LOGUIN='"+user+"'and PWD='"+psw+"' "));
    }
     
    bool Login::connecterTantQuePatient()
    {
        QSqlQuery query;
        return(query.exec("select * from PATIENT where LOGUIN='"+user+"'and PWD='"+psw+"' "));
    }
    et finalement l'implementation de cliqueBoutonConnecter()

    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
     void FenetreLogin::cliqueBoutonConnecter()
    {
        Login log(user->text(),password->text());
        if(log.connecterTantQueAdmin())
            {
               FenetreAdmin *fen = new FenetreAdmin;
               fen->show();
                this->close();
     
            }
            else if(log.connecterTantQueMedecin())
                {
                    FenetreMedecin *fen = new FenetreMedecin;
                    fen->show();
                     this->close();
                }
            else if(log.connecterTantQuePatient())
                {
                     FenetrePatient *fen = new FenetrePatient;
                     fen->show();
                     this->close();
     
                 }
             else
                 {
                      QMessageBox::critical(this, "erreur", "Verifier votre user et mot de pass ");
                 }
     }
    J'ai testé ,toujours il maffiche QMessageBox::critical meme si le pwd et mot de pass sont correctes (admin ou patient ou medecin).

    merci d'avance

  2. #2
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Regardes des tutos et la doc sur la façon de faire des requêtes SQL.
    Dans ton code tu retournes directement le booléen résultat de exec mais ce booléen là t'indique seulement si la requête a bien été exécutée ou pas. Toi ce que tu veux tester c'est si la requête SELECT a un résultat ou pas, c'est la fonction QSqlQuery::size() qui te dira ça.
    Et si tu obtiens l'erreur à chaque fois c'est que tes requêtes ont renvoyé false donc tu as un problème avec la connexion à ta base de données, ou bien dans la syntaxe de ta requête ou autre, tu devras aussi tester le résultat de exec pour voir si ta requête a réussi (et débuguer). Et pense à afficher des logs de debug, par exemple afficher QSqlQuery::lastError() quand ta requête est en erreur.

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/03/2009, 15h57
  2. Réponses: 3
    Dernier message: 23/08/2006, 16h27
  3. Ouvrir une fenêtre sous une autre
    Par lassad dans le forum Langage
    Réponses: 3
    Dernier message: 13/10/2005, 13h31
  4. Comment ouvrir une fenêtre en plein écran ?
    Par magic8392 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 11/10/2005, 12h05
  5. [JFrame] Comment ouvrir une fenêtre maximiser
    Par dadg dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 11/12/2004, 18h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo