Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.9.1 - Qt Creator : 4.4.0 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

Initialisation QList

bonjour à tous,
encore une question de débutant :)
j'essaie d'utiliser les QList pour stocker mes QLineEdit.
Si dans le header de la classe je créé en private :
QList m_champs;
Dans la fonction (cpp) je n'arrive pas à l'initialiser
m_champs = new QList... plante à la compile

Si je supprime du header et je mets
QList m_champs directement dans la fonction çà marche, sauf que j'aurai aimé avoir ma QList dans mes variables private pour récupérer facilement l'info.

Merci de vos explications

Réponses

  • December 2009 modifié
    QList <QLineEdit *> m_champs;
    Lorsque tu fait
    m_champs = new QList... Tu ne fais pas une initialisation. Tu allous la mémoire pour les pointeurs par exemple. Ici m_champs n'est pas un pointeur c'est une liste (=> d'où ton plantage). Donc tu n'as pas à faire m_champs = new .... Par contre il faudra que tu fasse l'allocation pour chaque éléments de m_champs.
    Pour ajouter un élément à ta liste tu as plusieurs méthodes à ta disposition.
    Tu peux par exemple faire :
    QLineEdit m_lineEdit = new QLineEdit();
    m_champs.push_back(m_lineEdit);
    Bon je te dit ça comme ça me vient mais ça doit pouvoir te donner un peut d'aide pour avancer.

    Par contre je pense que tu devrais revoir un peu les bases du C++ parce que ton problème ne concerne pas vraiment QT là c'est un problème de compréhension du C++. Mais j'espère que le peu que je t'ai dit te suffira à aller de l'avant.

    Et pense à bien comprendre la différence entre initialisation et allocation. Là c'est une erreur vraiment grossière.

    Voili voilou!!!
  • Merci de ton aide Kewin !
    j'avais effectivement oublié une *
    en faisant QList *m_champs dans le header çà roule.
    Tu as raison concernant sur les lacunes, je me suis lancé dans C++ et Qt en même temps il y a peu.
    Mais c'est en forgeant qu'on devient forgeron ! :)
    merci aussi pour le pushback, j'avais testé append qui marche aussi mais j'avoue ne pas connaître la nuance.

    bon ben vais essayer d'être moins "grossier" pour ma prochaine question !! :)
  • OttoVanzig said:
    j'avais effectivement oublié une *
    en faisant QList *m_champs dans le header çà roule.
    Tu pouvais également laisser QList m_champs dans ton header et ne pas faire m_champs = new QList(). Cela aurait très bien fonctionné. Après c'est une question de conception.
    OttoVanzig said:
    Mais c'est en forgeant qu'on devient forgeron ! smile
    Bien d'accord mais tu aurais peut etre du commencer par le c++ tout seul la c'est compliqué les deux en même temps mais j'ai juste à te souhaiter bon courage!!
    OttoVanzig said:
    merci aussi pour le pushback, j'avais testé append qui marche aussi mais j'avoue ne pas connaître la nuance.
    Pour la nuance je te laisse aller voir dans la doc de QT. Il y a a priori une différence dans la rapidité d'exécution mais je ne suis pas sur. Tu remarqueras également dans la doc de QT qu'il y a vraiment beaucoup de technique d'insertion qui te permettrons d'insérer notamment en début ou en fin de liste. Tout dépend de l'utilisation que tu veux avoir de ta QList.
    OttoVanzig said:
    bon ben vais essayer d'être moins "grossier" pour ma prochaine question !! smile
    Je ne voulais pas te vexer juste que tu ne confonde plus les deux notions (initialisation et allocation) car ce sont les deux notions de bases. Alors excuse moi si cela paraissais un peut cru ce n'était pas le cas.

    Sur ce bonne continuation et surtout bonne chance.
Connectez-vous ou Inscrivez-vous pour répondre.