[QT C++] créer un tableau de QLabel?
Slici
Messages postés
446
Statut
Membre
-
Dhampir -
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-
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-
3 réponses
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:
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).
Attends j'ai fais ca il y a pas longtemps et ca marchait.
Bon c'était un tableau à deux dimensions contenant des pointeurs de QLabel.
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*[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]->
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!
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!