Salut a tous,
Je cherche en faite a afficher une partie d'un tableau (stocké dans une QList de QList) dans un GridLayout
L'utilisateur peut choisir le nb de ligne et de colonnes qu'il veut afficher de ces donnée,
Mon programme doit donc effacer le contenu du Grid a chaque fois que l'utilisateur change les dimension
et ensuite afficher le nouveaux Grid.
Mon programme s'execute sans probleme mais lorsque l'on baisse les dimension des cases de l'ancien QGrid s'affiche derriere le nouveau....
Y a til un probleme de rafraichissement ou est-ce que je detrui mal l'ancien QGrid???
Si quelqu'un a un debut de réponse je suis preneur

Voici mon code:
++++++++++++++++++++++++++++++++++++++++++++++++++
// fen.cpp
#include "fen.h"
using namespace std;
FenPrincipale::FenPrincipale()
{
// fenetre principal
QVBoxLayout *fenetre_principale = new QVBoxLayout(this);
setLayout(fenetre_principale);
setWindowTitle("Projet");
resize(800, 600); // a voir
// 1-generer matrice
nb_col = new QSpinBox;
nb_col->setValue(2);
nb_col->setMaximum(20);
nb_lig = new QSpinBox;
nb_lig->setValue(2);
nb_lig->setMaximum(20);
QFormLayout *nom_col = new QFormLayout;
QFormLayout *nom_lig = new QFormLayout;
nom_col->addRow("Nombre de colonne : ",nb_col);
nom_col->addRow("Nombre de ligne : ",nb_lig);
m_boutongenMat = new QPushButton("Generer la Matrice");
connect(m_boutongenMat, SIGNAL(clicked()), this, SLOT(genererMat()));
QVBoxLayout *nb_lig_col = new QVBoxLayout;
nb_lig_col->addLayout(nom_col);
nb_lig_col->addLayout(nom_lig);
nb_lig_col->addWidget(m_boutongenMat);
QGroupBox *numcollig = new QGroupBox("Generer la matrice");
numcollig->setLayout(nb_lig_col);
// 2-definition d'un tableau de QList de SpinBox
for(int i=0;i<10;i++)
{
monTableauStab << QList<QDoubleSpinBox *>();
for(int j=0;j<10;j++)
{
monTableauStab[i] << new QDoubleSpinBox(this);
}
}
// gridlayout ou seront affiché les elements de la QList
gridstablistLayout = new QGridLayout(this);
QGroupBox *Boxdugrid = new QGroupBox(this);
Boxdugrid->setLayout(gridstablistLayout);
fenetre_principale->addWidget(numcollig);
fenetre_principale->addWidget(Boxdugrid);
}
void FenPrincipale::genererMat()
{
int_nb_lig = nb_lig->value() ;
int_nb_col = nb_col->value() ;
cout << int_nb_lig << int_nb_col << "bordel" << endl;
// on commence par sauvegarder les donnees de la mat
// on detruit le QGridLayout
if (true){
QLayoutItem *child;
while ((child = gridstablistLayout->takeAt(0)) != 0)
{
//child->widget()->deleteLater();
delete child;
}
}
// on affiche une partie du tableau dans un QGridLayout
for(int i=0;i<int_nb_lig;i++)
{
for(int j=0;j<int_nb_col;j++) // j a 1 car 1ere case on met label jonction a la place
{
gridstablistLayout->addWidget(monTableauStab[i][j],i,j);
}
}
}
++++++++++++++++++++++++++++++
// fen.h
#ifndef HEADER_FENPRINCIPALE
#define HEADER_FENPRINCIPALE
#include <QtGui>
#include <iostream>
class FenPrincipale : public QWidget
{
Q_OBJECT
public:
FenPrincipale();
private slots:
void genererMat();
private:
int int_nb_lig;
int int_nb_col;
QSpinBox *nb_col;
QSpinBox *nb_lig;
QPushButton *m_boutongenMat;
QList<QList<QDoubleSpinBox *> > monTableauStab;
QGridLayout *gridstablistLayout;
};
#endif
+++++++++++++++++++++++++++++++++++++++++++++++++++
//main.cpp
#include <QApplication>
#include "fen.h"
typedef double vect[1000];
using namespace std;
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
FenPrincipale fenetre;
fenetre.show();
return app.exec();
system("pause");
return 0;
}
+++++++++++++
Dsl mais je n'ai pas trouvé comment faire de citation
