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 :

Manipulation d'un attribut de type QListIterator


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de mac&cheese
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 98
    Par défaut Manipulation d'un attribut de type QListIterator
    Bonsoir à tous,

    (Eh oui encore une question...)
    Alors je fais appel à vous cette fois car je rencontre un petit probleme (mais costaud) avec un QListIterator.
    Voila le probleme:
    First of all, j'avais besoin d'un attribut de type QListIterator dans ma classe; j'ai du declarer un pointeur de cet attribut et faire une petite bidouille car un QListIterator n'est pas instanciable sans lui avoir passé en argument un Qlist... bref ensuite voila le probleme:
    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
     
    bool Dialog::listProcessing() {
      qDebug() << "begin of list processing...";
      QFile list(lineEdit->text());
      list.open(QIODevice::ReadOnly);
      QString line;
     
      while(1) {
        line = (QString)(list.readLine());
        if (line.isEmpty())
          break;
        if (line.startsWith("#image#")) {
          line.remove("#image#");
          file << line.trimmed();
        }
      }
      QListIterator<QString> i(file);
      iterator = &i;
      //iterator->next();
      print(iterator->next());
      qDebug() << "end of list processing!";
    }
     
    void Dialog::previous() {
      if (iterator->hasPrevious());
        print(iterator->previous());
    }
     
    void Dialog::next() {
      if (iterator->hasNext())
        print(iterator->next());
    }
    Dans ma fonction listProcessing() l'utilisation des iterator->next() fonctionnent à merveille (meme celui de la ligne commentée)... mais une fois rentré dans une des deux dernières fonctions: plantage et fermeture du programme sans afficher l'image suivante (ou precedente, selon le cas).
    Apres un petit debuggage, je me rend compte que l'utilisation de iterator->next() ou previous() ne fonctionne que dans listProcessing();

    Alors je fait appel à votre serviabilité... aidez moi svp.

    PS: list est un fichier ASCII qui contient deux chemin d'images chacun ecrit sur une ligne.

    N'hesitez pas si vous desirez plus d'info., merci par avance.

    Mac & Cheese

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
     QListIterator<QString> i(file);
      iterator = &i;
      //iterator->next();
      print(iterator->next());
      qDebug() << "end of list processing!";
    }
    a la sortie de cette fonction, i est detruit, donc iterator est un invalide.
    Pourquoi iterator est un pointeur????

  3. #3
    Membre confirmé
    Avatar de mac&cheese
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 98
    Par défaut
    Tout d'abord, merci Mongaulois pour ta reponse.

    Ensuite, iterator est un pointeur car en realité, c'est un des attributs de ma classe Dialog donc je veux pouvoir l'utiliser dans toutes les fonctions appartenant à cette classe.

    La fonction listProcessing() est la premiere à etre lancée, elle initialise list (qui au passage est un attribut aussi), mais, à partir du moment ou j'utilise iterator en dehors de cette fonction, ça plante.iterator n'est pas detruit lui car cet un attribut, correct non?

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par mac&cheese Voir le message
    iterator n'est pas detruit lui car cet un attribut, correct non?
    oui mais iterator est un pointeur. c'est la zone ou il pointe qui est invalide car i as été detruit.
    Pourquoi utilise tu un pointeur?

  5. #5
    Membre confirmé
    Avatar de mac&cheese
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 98
    Par défaut
    Ah quel idiot je suis...
    Effectivement, je comprend ce que tu veux dire.
    iterator est un pointeur car je n'arrive pas à l'instancier autrement.
    Le prototype du constructeur de QListIterator est: QListIterator(QList<type>&).
    Comment puis-je declarer un attribut QListIterator afin d'y acceder depuis n'importe quelle fonction de ma classe Dialog?

    Si tu desires jeter un coup d'oeil à mes sources, je te les donnes.

    Mac & Cheese

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

Discussions similaires

  1. comment recuperer attribut de type hidden
    Par MSM_007 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 19/07/2006, 12h04
  2. manipulation d'un champ de type Memo
    Par ivanleterrible dans le forum Bases de données
    Réponses: 6
    Dernier message: 29/05/2006, 21h53
  3. Réponses: 3
    Dernier message: 02/05/2006, 15h12
  4. probleme avec les attributs de type ID
    Par ben83 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 01/01/2006, 21h49
  5. Réponses: 3
    Dernier message: 20/09/2005, 08h59

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