Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Qt] QListWidgetItem

Comment on fait pour mettre plusieurs infos?

    1 juin 2008 à 3:26:37

    Bonjour à tous. :)
    Récemment, j'ai fait le TP sur ZeroClassGenerator. J'ai réussi sans grande embûche à faire le programme de base. Puis, j'ai créé deuc QListWidget: un pour lister les attributs de ma classe et l'autre pour lister les Méthodes. Mon code marche bien. Tout s'affiche, et on génère le code comme prévu. Maisj'ai aussi fait en sorte de générer le code du .cpp. Mais comme j'entre le prototype de la méthode toute entier dans le champ du QMessageBox::getText(), et que c'est ce prototype complet qui est mis en "label" pour le QListWidgetItem inséré dans le QListWidget, je ne peux pas dans le .cpp séparer le type du nom de la méthode pour y insérer le nom de la classe e les ::

    Em faot, tout ce que je veux savoir:
    Est-ce possible d'entrer plus d'une information dans un QListWidgetItem, et si oui, comment.

    Merci d'avance pour votre collaboration!
    ;)

    EDIT: Je crois avoir eu une idée:est-ce que je pourrais créer une classe fille de QListWidgetItem et y mettre en propriété une structure? de cette façon ce serait possible, non?
    • Partager sur Facebook
    • Partager sur Twitter
      1 juin 2008 à 4:28:29

      Salut!

      Ce que j'ai fait, c'est que j'ai créé un SLOT pour lorsque l'on clique sur "Ajouter un attribut" ... Et j'inscrit le tout dans un tableau de structure. Je met 50 cases à mon tableau, donc j'affiche une erreur quand l'utilisateur dépasse ce nombre. Quand on clique sur ajouter, ça donne quelque chose du genre:

      tableau[nb_attributs].nom = m_nom->text();
      tableau[nb_attributs].type = m_type->text();

      etc...


      J'ai une question pour toi, est-ce que tu as réussi à créer un bouton "Effacer l'attribut" dans la liste? J'ai beau essayer tout, rien ne fonctionne ...

      Merci!
      • Partager sur Facebook
      • Partager sur Twitter
        1 juin 2008 à 4:37:03

        Ouais! C'est simple:
        tu fais un bouton et un slot suppAtt():
        voici le code:
        void FenPrincipale::suppAtt()
        {
           QListWidgetItem *aSupprimer = liste->takeItem(liste->currentRow());
           delete aSupprimer;
        }
        


        EDIT: et pour ce qui est du tableau de structures, je comprend pas ce que c'est, comment sa fonctionne...
        • Partager sur Facebook
        • Partager sur Twitter
          1 juin 2008 à 17:13:37

          Wow merci!!! =D

          Pour le tableau de structures, je te donne un exemple:


          struct Attribut
              {
                  QString nomAttribut;
                  QString typeAttribut;
                  bool pointeur;
                  bool accesseur;
                  bool modificateur;
                  QString nomAccesseur;
                  QString nomModificateur;
              };
          
              Attribut tableauAttributs[50];
          


          Quand on clique sur "Ajouter un attribut", après avoir entré le nom, le type, etc:

          void FenPrincipale::ajouterAttribut()
          {
              if(m_nomAttribut->text().isEmpty() == true || m_typeAttribut->text().isEmpty() == true)
              {
                  QMessageBox::critical(this, "Erreur", "Vous devez au moins remplir les champs \"Nom\" et \"Type\"");
              }
              else
              {
                  int nb_attributs = m_listeAttributs->count();
                  if(nb_attributs == 50)
                  {
                      QMessageBox::critical(this, "Erreur", "Vous ne pouvez pas ajouter plus de 50 attributs");
                  }
                  else
                  {
                      bool memeNom = false;
                      for(int i = nb_attributs; i >= 0; i--)
                      {
                          if(tableauAttributs[i].nomAttribut == m_nomAttribut->text())
                          {
                              memeNom = true;
                          }
                      }
                      if(memeNom)
                      {
                          QMessageBox::critical(this, "Erreur", "Il y déja un attribut qui porte ce nom");
                      }
                      else
                      {
          
                          tableauAttributs[nb_attributs].nomAttribut = m_nomAttribut->text();
                          tableauAttributs[nb_attributs].typeAttribut = m_typeAttribut->text();
          
                          if(m_pointeur->isChecked() == true)
                              tableauAttributs[nb_attributs].pointeur = true;
                          else
                              tableauAttributs[nb_attributs].pointeur = false;
          
                          if(m_genererAccesseur->isChecked() == true)
                              tableauAttributs[nb_attributs].accesseur = true;
          
                          else
                              tableauAttributs[nb_attributs].accesseur = false;
          
                          if(m_genererModificateur->isChecked() == true)
                              tableauAttributs[nb_attributs].modificateur = true;
          
                          else
                              tableauAttributs[nb_attributs].modificateur = false;
          
                          m_listeAttributs->addItem(m_nomAttribut->text());
                      }
                  }
              }
          }
          


          Je suis rendue à l'étape suivante: Quand on sélectionne un attribut, ses propriétés s'affichent à droite dans un groupBox nommé "Propriétés de l'attribut". Quand aucun attribut est sélectionné, il est désactivé.

          Voilà, j'espère que ça peut t'aider! Peut-être que je me complique la vie en faisant ça loll mais c'est le seul moyen que j'ai trouvé =P Maintenant suffit de trouver comment modifier le tableau quand un attribut est effacé!
          • Partager sur Facebook
          • Partager sur Twitter

          [Qt] QListWidgetItem

          × 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