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 :

Formulaire entre deux pages

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2017
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2017
    Messages : 77
    Par défaut Formulaire entre deux pages
    Bonjour j'essai de faire un logiciel pour une tablette tactile pour gérer des consommations. J'ai énormément de question mais je vais y aller petit à petit.

    Je commence juste à mettre le nez dans le C++ et Qt et je me suis lancé dans ce projet histoire de pratiquer un peu.

    Le projet propose à l'utilisateur de choisir quoi consommer en fonction de s'il est déjà inscrit ou non afin de débiter son compte automatiquement.

    Je propose dans un premier temps à l'utilisateur de se logger, soit il est "déjà connu" soit non et dans ce cas je souhaite faire apparaitre un formulaire pour qu'il puisse rentrer son nom, prénom et son code secret pour s'authentifier.

    Voici le .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
    36
    37
    38
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
     
    #include <QMainWindow>
    #include <QPushButton>
    #include <QLineEdit>
    #include <QFormLayout>
     
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
     
    public:
        MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
    public slots:
        void ouvrirDialogue();
        void ouvrirFenetreConsommer();
        void ouvrirDialogueAppoint();
        void ouvrirFenetreAppoint();
        void ouvrirDialogueParametres();
        void ouvrirFenetreParametres();
        void ouvrirDialogueSitCompte();
        void ouvrirFenetreSitCompte();
        void ouvrirFormulaire();
     
    private:
        QPushButton *m_boutonConsommer;
        QPushButton *m_boutonAppoint;
        QPushButton *m_boutonSitCompte;
        QPushButton *m_boutonParametres;
        QLineEdit *nom;
        QLineEdit *prenom;
        QLineEdit *code;
        QFormLayout *formulaire;
    };
     
    #endif // MAINWINDOW_H
    Voici le Mainwindow.ccp
    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
     
    #include "mainwindow.h"
    #include "consommer.h"
    #include "appoint.h"
    #include "parametres.h"
    #include "sitcompte.h"
    #include <QMessageBox>
    #include <QInputDialog>
    #include <QVBoxLayout>
    #include <QWidget>
    #include <QFormLayout>
    #include <QString>
    #include<QLineEdit>
     
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
    {
        setFixedSize(1366,768);
     
        m_boutonConsommer = new QPushButton("Consommer",this);
        m_boutonConsommer -> setFixedSize(300,100);
        m_boutonConsommer -> setFont(QFont("Comic Sans MS",14));
        m_boutonConsommer -> move(550,80);
     
        m_boutonAppoint = new QPushButton("Faire l'appoint",this);
        m_boutonAppoint -> setFixedSize(300,100);
        m_boutonAppoint -> setFont(QFont("Comic Sans MS",14));
        m_boutonAppoint -> move(550,230);
     
        m_boutonSitCompte = new QPushButton("Situation des comptes",this);
        m_boutonSitCompte -> setFixedSize(300,100);
        m_boutonSitCompte -> setFont(QFont("Comic Sans MS",14));
        m_boutonSitCompte -> move(550,380);
     
        m_boutonParametres = new QPushButton("Paramètres",this);
        m_boutonParametres -> setFixedSize(300,100);
        m_boutonParametres -> setFont(QFont("Comic Sans MS",14));
        m_boutonParametres -> move(550,530);
     
        QObject::connect(m_boutonConsommer,SIGNAL(clicked()),this,SLOT(ouvrirDialogue()));
        QObject::connect(m_boutonAppoint,SIGNAL(clicked()),this,SLOT(ouvrirDialogueAppoint()));
        QObject::connect(m_boutonSitCompte,SIGNAL(clicked()),this,SLOT(ouvrirDialogueSitCompte()));
        QObject::connect(m_boutonParametres,SIGNAL(clicked()),this,SLOT(ouvrirDialogueParametres()));
     
    }
     
    MainWindow::~MainWindow()
    {
     
    }
     
    void MainWindow::ouvrirDialogue()
    {
        int reponse = QMessageBox::question(this,"nouvel utilisateur?","êtes vous nouveau?",QMessageBox::Yes|QMessageBox::No);
        if (reponse ==QMessageBox::No)
        {
            bool ok = false;
            QString nom = QInputDialog::getText(this,"Qui êtes vous?","Quel est votre identité?",QLineEdit::Normal,QString(),&ok);
            if (ok&& !nom.isEmpty())
            {
                QMessageBox::information(this,"nom","Bonjour "+ nom +" !");
                ouvrirFenetreConsommer();
     
            }
            else
            {
                QMessageBox::critical(this,"nom","Vous n'avez pas donnez votre nom!");
            }
          }
     
        else if (reponse == QMessageBox::Yes)
        {
          ouvrirFormulaire();
        }
    }
     
    void MainWindow ::ouvrirFenetreConsommer()
    {
        Consommer *c = new Consommer();
        c->show();
    }
     
    void MainWindow::ouvrirDialogueAppoint()
    {
            bool ok = false;
            QString code = QInputDialog::getText(this,"Reservé Administrateur Bar","Seul les gérants du Bar ont accès à cette section. Veuillez entrer votre code",QLineEdit::Normal,QString(),&ok);
            if (code == "3615")
            {
                QMessageBox::information(this,"Faire l'Appoint","Bonjour Administrateur!");
                ouvrirFenetreAppoint();
     
            }
            else
            {
                QMessageBox::critical(this,"Faire l'Appoint","Vous n'avez pas les droits pour procéder à l'appoint!");
     
            }
    }
     
    void MainWindow::ouvrirFenetreAppoint()
    {
        Appoint *d = new Appoint();
        d->show();
     
    }
     
    void MainWindow::ouvrirDialogueParametres()
    {
            bool ok = false;
            QString code = QInputDialog::getText(this,"Reservé Administrateur Bar","Seul les gérants du Bar ont accès à cette section. Veuillez entrer votre code",QLineEdit::Normal,QString(),&ok);
            if (code == "3615")
            {
                QMessageBox::information(this,"Modifier les paramètres","Bonjour Administrateur!");
                ouvrirFenetreParametres();
     
            }
            else
            {
                QMessageBox::critical(this,"Modifier les paramètres","Vous n'avez pas les droits pour procéder à l'appoint!");
     
            }
    }
    void MainWindow::ouvrirFenetreParametres()
    {
        Parametres *e = new Parametres();
        e->show();
     
    }
     
    void MainWindow::ouvrirDialogueSitCompte()
    {
            bool ok = false;
            QString code = QInputDialog::getText(this,"Reservé Administrateur Bar","Seul les gérants du Bar ont accès à cette section. Veuillez entrer votre code",QLineEdit::Normal,QString(),&ok);
            if (code == "3615")
            {
                QMessageBox::information(this,"Consulter la situation des comptes","Bonjour Administrateur!");
                ouvrirFenetreSitCompte();
     
            }
            else
            {
                QMessageBox::critical(this,"Consulter la situation des comptes","Vous n'avez pas les droits pour procéder à l'appoint!");
     
            }
    }
    void MainWindow::ouvrirFenetreSitCompte()
    {
        SitCompte *f = new SitCompte();
        f->show();
     
    }
     
    void MainWindow::ouvrirFormulaire()
    {
        QWidget formulaire;
        QLineEdit *nom = new QLineEdit;
        QLineEdit *prenom = new QLineEdit;
        QLineEdit *code = new QLineEdit;
     
        QFormLayout *layout = new QFormLayout;
        layout ->addRow ("Votre Nom",nom);
        layout ->addRow ("Votre prénom",prenom);
        layout ->addRow ("choisissez un mot de passe",code);
        formulaire.setLayout(layout);
        formulaire. show();
    }
    Vu comme c'est un peu lourdingue tout ca le problème bien du dernier "void" tout en bas pour mon formulaire qui est appelé en ligne 73.
    Quand je tente de lancer tout fonctionne à peu près bien sauf le formulaire qui ne s'affiche pas, je vois une fenêtre qui s'affiche et qui disparait furtivement. J'ai tenter le code fourni dans le bouquin de C++ mais ca ne marche pas dans mon cas et je ne vois pas d'où vient le problème.

    Merci d'avance pour vos réponses.

    Respectueusement

    Sylvain

  2. #2
    Invité
    Invité(e)
    Dernière modification par Invité ; 20/11/2018 à 19h52. Motif: Mise à jour du lien

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2017
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2017
    Messages : 77
    Par défaut
    Bonsoir j'ai tenter de comprendre mais je n'y arrive pas le code fonctionne lorsque je le met dans le fichier main, mais je n'ai juste qu'une fenêtre sans les lignes de nom prénom code…

    J'ai allégé mon code en retirant les includes superflue, c'est vrai que mon logiciel prend moins de temps à la compilation mais je ne comprend pas pourquoi mon formulaire n'apparait toujours pas.

    Merci d'avance.

    Au passage j'ai créer une nouvelle fenêtre formulaire dont voici le code:

    Pour le .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
    #ifndef FORMULAIRE_H
    #define FORMULAIRE_H
     
    #include <QObject>
    #include <QWidget>
    #include <QLineEdit>
    #include <QFormLayout>
    #include <QPushButton>
    #include <QApplication>
    #include <QVBoxLayout>
     
     
    class Formulaire: public QWidget
     
    {
         Q_OBJECT
    public:
        Formulaire(QWidget *parent= nullptr);
        ~Formulaire();
    public slots:
     
     
    private:
        QLineEdit *nom;
        QLineEdit *prenom;
        QLineEdit *code;
        QFormLayout *formulaire;
        QPushButton * boutonOk;
    };
     
    #endif // FORMULAIRE_H
    et pour le 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
    #include "formulaire.h"
     
    Formulaire::Formulaire(QWidget *parent)
        :QWidget(parent)
     
    {
        QWidget formulaire ;
     
        QLineEdit *nom = new QLineEdit;
        QLineEdit *prenom = new QLineEdit;
        QLineEdit *code = new QLineEdit;
     
        QFormLayout *formlayout = new QFormLayout;
        formlayout ->addRow ("Votre &Nom",nom);
        formlayout ->addRow ("Votre &prénom",prenom);
        formlayout ->addRow ("choisissez un &mot de passe",code);
     
        QVBoxLayout *layoutPrincipal = new QVBoxLayout;
        layoutPrincipal ->addLayout(formlayout);
     
        QPushButton *boutonOk = new QPushButton("Ok");
        QWidget::connect(boutonOk,SIGNAL(clicked()),this,SLOT(quit()));
        layoutPrincipal-> addWidget(boutonOk);
     
        formulaire.setLayout(layoutPrincipal);
        formulaire. show();
     
    }
     
    Formulaire::~Formulaire()
    {
     
    }

  4. #4
    Invité
    Invité(e)
    Par défaut
    Lis bien ce qui est expliqué dans le rappel du sujet vers lequel je t'ai dirigé. C'est justement la configuration dans laquelle tu te trouves :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {
        QWidget formulaire;
        ....  
        formulaire.show();
    } // formulaire de suite détruit ici
    Et dans ton dernier code, tu essaies de créer un (autre) QWidget formulaire;… à l'intérieur de ton formulaire, et cet autre formulaire est de même de suite détruit en sortant de ton constructeur, et avec lui tous ses champs (enfants), te laissant avec un formulaire vide.
    Vu le contexte, tu veux ouvrir une fenêtre modale (cas qui suit le rappel du sujet), et tu devrais plutôt hériter de la classe QDialog.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Formulaire::Formulaire(QWidget *parent)
        : QDialog(parent)
    {
        QWidget formulaire;
    
        ...
    
        formulaire.setLayout(layoutPrincipal);
        formulaire. show();
    }

Discussions similaires

  1. Rediriger des données d'un formulaire vers deux pages différentes
    Par griese dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/12/2006, 11h30
  2. Réponses: 2
    Dernier message: 23/06/2006, 21h45
  3. [XSL-FO] Problème de pages blanches entre deux page-sequence
    Par slopera dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 28/03/2006, 16h10
  4. Passage de données entre deux pages
    Par spica92 dans le forum ASP
    Réponses: 2
    Dernier message: 08/09/2005, 14h38
  5. passage de parametre entre deux page asp
    Par tomtom25 dans le forum ASP
    Réponses: 4
    Dernier message: 01/04/2005, 16h16

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