Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Qt]Aide pour l'affichage de QString dans un QLineEdit

    22 juin 2008 à 16:07:32

    bonjour a tous !!

    voila, je crée un carnet d'adresse, j'ai tout bien programmé (apparence, connection des SLOT et SIGNAL...) mais je voudrais que l'utilisateur puisse revoir le dernier contact (bouton "précédent") (et par la suite le suivant a faire lorsque j'aurais réglé se probleme) afin de le modifier par exemple ;)

    donc voila mon code (si au passage vous pouviez me donner des conseils pour le raccourcir et m'aider pour les QStrings car je l'ai met de fois :) )
    #include "AddressBook.h"
    
    AddressBook::AddressBook()
    {
        // Creation des boutons de droite + son layout
            addButton = new QPushButton(tr("Ajouter contact"));
            addButton->setEnabled(true);  // Affiche et active le bouton
    
            submitButton = new QPushButton(tr("Valider"));
            submitButton->setEnabled(false); // Désactive le bouton (mais le laisse afficher)
    
            cancelButton = new QPushButton(tr("Annuler"));
            cancelButton->setEnabled(false);
    
    
            QVBoxLayout *buttonRightLayout = new QVBoxLayout;
            buttonRightLayout->addWidget(addButton);
            buttonRightLayout->addWidget(submitButton);
            buttonRightLayout->addWidget(cancelButton);
            buttonRightLayout->addStretch();
    
    
        // Creation des boutons du bas + son layout
            previousButton = new QPushButton(tr("Précédent"));
            previousButton->setEnabled(false);
    
            nextButton = new QPushButton(tr("Suivant"));
            nextButton->setEnabled(false);
    
            QHBoxLayout *buttonDownLayout = new QHBoxLayout;
            buttonDownLayout->addWidget(previousButton);
            buttonDownLayout->addWidget(nextButton);
    
    
        // Creation des champs a remplir + son layout
            QLabel *nameLabel = new QLabel(tr("Nom :"));
            nameLine = new QLineEdit;
            nameLine->setReadOnly(true);
    
            QLabel *surnameLabel = new QLabel(tr("Prénom :"));
            surnameLine = new QLineEdit;
            surnameLine->setReadOnly(true);
    
            QLabel *addressLabel = new QLabel(tr("Adresse (rue):"));
            addressLine = new QLineEdit;
            addressLine->setReadOnly(true);
    
            QLabel *cityLabel = new QLabel(tr("Ville :"));
            cityLine = new QLineEdit;
            cityLine->setReadOnly(true);
    
            QLabel *phoneLabel = new QLabel(tr("Tel. :"));
            phoneLine = new QLineEdit;
            phoneLine->setReadOnly(true);
    
            QLabel *emailLabel = new QLabel(tr("E-m@il :"));
            emailLine = new QLineEdit;
            emailLine->setReadOnly(true);
    
            QGridLayout *chpLayout = new QGridLayout;
            chpLayout->addWidget(nameLabel, 1, 0);
            chpLayout->addWidget(nameLine, 1, 1);
            chpLayout->addWidget(surnameLabel, 2, 0);
            chpLayout->addWidget(surnameLine, 2, 1);
            chpLayout->addWidget(addressLabel, 3, 0);
            chpLayout->addWidget(addressLine, 3, 1);
            chpLayout->addWidget(cityLabel, 4, 0);
            chpLayout->addWidget(cityLine, 4, 1);
            chpLayout->addWidget(phoneLabel, 5, 0);
            chpLayout->addWidget(phoneLine, 5, 1);
            chpLayout->addWidget(emailLabel, 6, 0);
            chpLayout->addWidget(emailLine, 6, 1);
            chpLayout->addLayout(buttonDownLayout, 7, 1);
    
    
        // Creation du layout principale
            QGridLayout *mainLayout = new QGridLayout;
            mainLayout->addLayout(chpLayout, 1, 0);
            mainLayout->addLayout(buttonRightLayout, 1, 2);
    
    
        // Reste du constructeur (connection, titre...)
        setLayout(mainLayout);
        setWindowTitle(tr("Open Book"));
    
        connect(addButton, SIGNAL(clicked()), this, SLOT(addContact()));
        connect(submitButton, SIGNAL(clicked()), this, SLOT(submitContact()));
        connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancel()));
        connect(previousButton, SIGNAL(clicked()), this, SLOT(previous()));
        connect(nextButton, SIGNAL(clicked()), this, SLOT(next()));
    }
    
    void AddressBook::addContact()
    {
        nameLine->setReadOnly(false);
        surnameLine->setReadOnly(false);
        addressLine->setReadOnly(false);
        cityLine->setReadOnly(false);
        phoneLine->setReadOnly(false);
        emailLine->setReadOnly(false);
    
        addButton->setEnabled(false);
        submitButton->setEnabled(true);
        cancelButton->setEnabled(true);
        previousButton->setEnabled(true);
        nextButton->setEnabled(true);
    }
    
    void AddressBook::submitContact()
    {
            QString name = nameLine->text();
            QString surname = surnameLine->text();
            QString address = addressLine->text();
            QString city = cityLine->text();
            QString phone = phoneLine->text();
            QString email = emailLine->text();
    
        if (name == "" || surname == "" || address == "")
        {
            QMessageBox::warning(this, tr("Champ(s) vide"), tr("Veuillez rentrer le nom, le prénom ou l'adresse."));
            return;
        }
    
        if (!name.isEmpty() && !surname.isEmpty() && !address.isEmpty())
        {
            QMessageBox::information(this, tr("Validation terminée"), tr("Validation réalisé avec succes !"));
    
            nameLine->setReadOnly(true);
            surnameLine->setReadOnly(true);
            addressLine->setReadOnly(true);
            cityLine->setReadOnly(true);
            phoneLine->setReadOnly(true);
            emailLine->setReadOnly(true);
    
            addButton->setEnabled(true);
            submitButton->setEnabled(false);
            cancelButton->setEnabled(false);
            previousButton->setEnabled(false);
            nextButton->setEnabled(false);
    
    
            nameLine->clear();       // clear est un SLOT qui "vide" le QLineEdit
            surnameLine->clear();
            addressLine->clear();
            cityLine->clear();
            phoneLine->clear();
            emailLine->clear();
            return;
        }
    }
    
    void AddressBook::cancel()
    {
        int reponse = QMessageBox::question(this, tr("Confirmation de l'annulation"), tr("Etes-vous sûr de vouloir supprimer ce contact ?"), QMessageBox::Yes | QMessageBox::No);
    
            if(reponse == QMessageBox::Yes)
            {
                nameLine->setReadOnly(true);
                surnameLine->setReadOnly(true);
                addressLine->setReadOnly(true);
                cityLine->setReadOnly(true);
                phoneLine->setReadOnly(true);
                emailLine->setReadOnly(true);
    
                addButton->setEnabled(true);
                submitButton->setEnabled(false);
                cancelButton->setEnabled(false);
                previousButton->setEnabled(false);
                nextButton->setEnabled(false);
    
                nameLine->clear();       // clear est un SLOT qui "vide" le QLineEdit
                surnameLine->clear();
                addressLine->clear();
                cityLine->clear();
                phoneLine->clear();
                emailLine->clear();
            }
    
            if(reponse == QMessageBox::No)
            {
                QMessageBox::information(this, tr(" "), tr("Aucune modification n'a été faite."));
                return;
            }
    }
    
    void AddressBook::previous()
    {
        QString name = nameLine->text();          // ICI lorsque je le met dans le .h
        QString surname = surnameLine->text();    // et que je compile, le .exe ne se
        QString address = addressLine->text();    // lance pas (un rapport de windows
        QString city = cityLine->text();          // apparait)
        QString phone = phoneLine->text();
        QString email = emailLine->text();
    
    
        QString oldName = name;
        QString oldSurname = surname;
        QString oldAddress = address;
        QString oldCity = city;
        QString oldPhone = phone;
        QString oldEmail = email;
    
    
    }
    
    void AddressBook::next()
    {
    }
    


    merci
    • Partager sur Facebook
    • Partager sur Twitter
      22 juin 2008 à 23:06:09

      Citation : Pas de titre

      ICI lorsque je le met dans le .h
      et que je compile, le .exe ne se
      lance pas (un rapport de windows
      apparait)


      Qu'est ce que tu met dans le .h en fait ?
      • Partager sur Facebook
      • Partager sur Twitter

      [Qt]Aide pour l'affichage de QString dans un QLineEdit

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown