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

Qt Discussion :

Récupération valeur QLineEdit toujours à NULL (ou presque)


Sujet :

Qt

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 239
    Points : 92
    Points
    92
    Par défaut Récupération valeur QLineEdit toujours à NULL (ou presque)
    Bonjour,

    Je reviens une nouvelle fois quérir votre précieuse aide en tout homme perdu que je suis.

    Voici mon problème, j'ai connecté mon bouton 'save' à une fenetre contenant des QLineEdit, le but est d'enregistrer les données écrire par l'utilisateur dans la database, mais la valeur récupérée est tout le temps NULL.

    voici du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void FenetrePrinc::ouvrirFichePro()
    {
    //dans ma fenetre principale, à l'ouverture de ma fenetre contenant les
    //QLineEdit, je connecte le bouton "enregistreract".
         FicheProprietaire *fichePro = new FicheProprietaire();
         database->initNewCodeP(fichePro);
         QScrollArea *scrollArea = new QScrollArea;
         scrollArea->setWidget(fichePro);
         mdiArea->addSubWindow(scrollArea);
     
         connect(enregistrerAct, SIGNAL(triggered()), this, SLOT(save()));
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    QVector<QString> FicheProprietaire::listAllQWidget() const 
    {
    //je liste ici tous mes QLineEdit, même s'il n'y en a qu'un pour le moment.
    //"nom" est un QLineEdit.
         QVector<QString> list;
     
              list.append(nom->displayText());
              return list;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void FenetrePrinc::save()
    {
    //le slot save va chercher la méthode 'savePropri' d'une autre classe.
         SavePropriClass *savingPropri = new SavePropriClass();
         savingPropri->savePropri();
    }
    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
    void SavePropriClass::savePropri()
    {
    //la méthode de cette autre classe, pas très importante excepté...
         fichepro = new FicheProprietaire;
         int reponse = QMessageBox::question(fichepro, "Enregistrement d'un Proprietaire", 
                                                "Vous êtes sur le points d'enregistrer un nouveau proprietaire. \n"
                                                "Voulez-vous poursuivre ? ", QMessageBox::Yes | QMessageBox::No);
         if (reponse == QMessageBox::Yes)
         {
             valueProprietaire(fichepro->listAllQWidget()); //...ceci !
         }
         else if (reponse == QMessageBox::No)
         {
             fichepro->close();
         }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void SavePropriClass::valueProprietaire(QVector<QString> v)
    {
    //pour le moment, juste un test de ma valeur...
         qDebug() << v.value(0);  //ceci retourne "" donc une chaine NULL. et c'est là le problème
    }
    En vous postant tout ça, je me rends compte que c'est pas mal le bazar tout ça...
    A noter aussi, que lors que la déclaration de ma QLineEdit "nom", si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom->setText("defaut");
    Alors à l'affichage du qDebug, j'ai bien la chaine "defaut" qui s'affiche et non pas une chaine NULL...

    Merci d'avance, en espérant être clair est compréhensif
    }

  2. #2
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    C'est simple, tu récupères les données d'une FichePro fraichement instanciée, et non celle utilisée par l'utilisateur.

    Par contre y'a certains trucs assez étonnant, surtout database->initNewCodeP(fichePro);. C'est quoi au juste? Pourquoi nommer un objet database? Pourquoi le lier à l'interface? C'est contraire au principe dont on a parlé dans un précédent fil

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 239
    Points : 92
    Points
    92
    Par défaut
    Salut,

    La classe "database" me sert à créer mes tables si elles n'existent pas ou plus et à me connecter à chaque ouverture du programme.

    La méthode initNewCodeP(FicheProprietaire *) me permet d'aller récupérer la valeur max +1 de "codeP" dans ma database pour l'initialiser dans la QLineEdit "codeP" de ma classe proprietaire (qui est en "readOnly") à chaque "fichier->nouveau->fiche proprietaire".

    J'ai n'ai pas trouvé de solution qui ne liait pas la classe database aux classes gérant l'interface...

    J'avais en effet déjà parlé de cette méthode, je la reposte quand même:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void DatabaseClass::initNewCodeP(FicheProprietaire *fichepro)
    {
           QString S;    
             QSqlQueryModel model;
             model.setQuery("SELECT MAX(codeP) FROM Proprietaire");
        if (model.lastError().isValid())
            qDebug() << model.lastError();
        else 
        {
            qDebug() << "requete correcte";
            qDebug() << S.setNum((model.record(0).value(0).toInt())+1); //retourne la valeur codeP+1 contenu dans la database
            fichepro->setCodeP(S);
        }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. valeur de ma dropdownlist toujours null
    Par SALISTASE dans le forum ASP.NET
    Réponses: 10
    Dernier message: 06/05/2009, 16h37
  2. [html:text][indexed]Valeurs des liste null...
    Par thibaut dans le forum Servlets/JSP
    Réponses: 13
    Dernier message: 08/09/2004, 10h36
  3. [Débutant][JSP]Récupération valeur de checkbox
    Par Crazyblinkgirl dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 01/09/2004, 10h16
  4. récupération valeur id auto incrément
    Par Jovial dans le forum Requêtes
    Réponses: 2
    Dernier message: 31/08/2004, 09h56
  5. Récupération valeur d'une propriété type TStrings
    Par Stéphane Vaillant dans le forum Langage
    Réponses: 2
    Dernier message: 01/03/2003, 12h47

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