[QT C++] créer un tableau de QLabel?

Slici Messages postés 446 Statut Membre -  
 Dhampir -
Bonjour,
J'aimerai créer un tableau de QLabel seulement je ne sais pas trop comment le déclarer et surtout comment le manipuler...

pour la déclaration j'ai tenté :

puis dans le .cpp :

QLabel *Echi[4];

Le programme compile correctement mais lorsque j'essaye de manipuler mon tableau, par exemple en faisant :

Echi[1]->clear();

le programme plante...

Mon tableau est-il correctement initialisé ou faut-il utiliser une autre méthode?

Comment manipuler un tel tableau?

D'avance merci !

-Slici-
Configuration: Windows XP
Firefox 3.0.5

3 réponses

  1. loupius
     
    Au lieu d'utiliser un tableau de QLabel, il est, dans la philosophie de Qt voire du C++, plus judicieux d'utiliser des listes.

    Déclaration:
    QList<QLabel*> listLabel;
    Remplissage:
    listLabel << new QLabel ("texte", parent);
    Utilisation:
    listLabel[index]->setText ("nouveauTexte");
    Nota: Si on n'a pas besoin de modifier le texte du label, ce qui est souvent le cas, il est inutile de mémoriser le pointeur sur les labels créés, car ils seront automatiquement supprimés lors de la suppression du parent (philosophie Qt).
    6
  2. togodo Messages postés 147 Date d'inscription   Statut Membre 8
     
    Attends j'ai fais ca il y a pas longtemps et ca marchait.
    2
    1. togodo Messages postés 147 Date d'inscription   Statut Membre 8
       
      Bon c'était un tableau à deux dimensions contenant des pointeurs de QLabel.
      QLabel ***label; // pour la déclaration
      
      //initialisation
      
      label = new QLabel**[6];
      	for(int i=0;i<6;i++)
      	{
      		label[i]=new QLabel*[7];
      	}
      	for(int i=0;i<6;i++)
      	{
      		for(int j=0;j<7;j++)
      		{
      			label[i][j]=new QLabel;
      			label[i][j]->setText("");
                              label[i][j]->setPixmap(QPixmap("c:/images/casevide.jpg"));
      			gridLayout->addWidget(label[i][j],i+1,j+0);
      		}
      	}
      l'utilisation
       
      label[j][i]


      Donc pour un normale ca donne


      QLabel **label; // pour la déclaration
      
      //initialisation
      
      label = new QLabel*[6];
      	for(int i=0;i<6;i++)
      	{
      		label[i]=new QLabel("");
      	}
      l'utilisation
       
      label[j]->
      
      
      0
      1. Dhampir > togodo Messages postés 147 Date d'inscription   Statut Membre
         
        salut!
        je viens de voir cette methode, j'ai essayé de l'appliquer a mon cas:
        je dois faire un echiquier 8*8.
        en modifiant les parametres de boucle, il compile, se lance, mai m'affiche pas mes label (qui sont des images)ci joint, mon code:


        int main( int argc, char** argv )
        {
        QApplication app(argc, argv);
        MaFenetre fenetre;
        QLabel ***label; // pour la déclaration
        QGridLayout * gridLayout =new QGridLayout;
        //initialisation

        label = new QLabel**[8];
        for(int i=0;i<8;i++)
        {
        label[i]=new QLabel*[8];
        }
        for(int i=0;i<8;i++)
        {
        for(int j=0;j<8;j++)
        {
        label[i][j]=new QLabel;
        label[i][j]->setPixmap(QPixmap("/images/Chess_pawnb_icon.png"));
        gridLayout->addWidget(label[i][j],i,j+0);
        }
        }
        fenetre.setLayout(gridLayout);
        // fenetre.commencer_partie();
        fenetre.show();

        return app.exec();
        }

        si jamais tu pouvais m'aidé, ça serait super!
        0
  3. Slici Messages postés 446 Statut Membre 86
     
    merci beaucoup de votre aide, je vais essayer ca !
    0