[QT C++] créer un tableau de QLabel?
Slici
Messages postés
428
Date d'inscription
Statut
Membre
Dernière intervention
-
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!