Bonjour les coupains!
Voilà, je viens réclamer votre aide suite à un petit pépin sur un programme pour mon boulot. J'ai une BDD stockée dans un objet avec plusieurs listes en attribut, et mon but est de compter les données par type... Par exemple, compter les données qui sont du matériel électrique et qui sont sous la responsabilité de l'entité "pôle 3". (La BDD est fonctionnelle)
Ensuite, en affichage, je voudrais avoir un système de tabs, avec, dans chaque onglet, un tableau permettant de voir toutes les concordances du type expliqué ci-dessus. Prennons juste l'exemple d'un seul onglet.
Je crée mon tableau, je crée une liste de QTableWidgetItem à 2D, je leur attribue la valeur kivabien, et après je met chaque QTableWidgetItem dans la cellule du tableau kivabien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//Toute la première partie fonctionne. Testée par mes soins.
//Création des listes de types de données à trier
QStringList listeTAD(LInventaire->listeTAD());
    listeTAD << "Total";
    QStringList listeCrit;
    listeCrit << "Criticité 0" << "Criticité 1" << "Criticité 2" << "Criticité 3" << "Criticité 4" << "Total";
//Création des headers
    QHeaderView *HGHeader = new QHeaderView(Qt::Horizontal);
    QHeaderView *VGHeader = new QHeaderView(Qt::Vertical);
    HGHeader->setSectionResizeMode(QHeaderView::ResizeToContents);
    VGHeader->setSectionResizeMode(QHeaderView::ResizeToContents);
    HGHeader->setStretchLastSection(true);
    VGHeader->setStretchLastSection(true);
//Création du tableau
    QTableWidget *OngletGQTW = new QTableWidget((listeTAD.size()),6, 0);
    OngletGQTW->setHorizontalHeader(HGHeader);
    OngletGQTW->setVerticalHeader(VGHeader);
    OngletGQTW->setHorizontalHeaderLabels(listeCrit);
    OngletGQTW->setVerticalHeaderLabels(listeTAD);
    OngletGQTW->setFixedSize(550,300);
 
//A partir de là, je ne sais pas trop....
//Création du tableau de QTableWidgetItem dont les dimensions s'accordent à celles des listes listeTAD et listeCrit (dont sa taille est fixe, 6)
    QTableWidgetItem CellsG[listeTAD.size()][6];
    for (int x = 0; x < listeCrit.size()-1; x++)
    {
        //sommeV permet de calculer le total de la colonne
        int sommeV;
        for (int y = 0; y < listeTAD.size()-1; y++)
        {
            int nbV;
            nbV = LInventaire->countG(listeTAD[y], x);
            sommeV += nbV;
            //Définition du contenu de la cellule
            CellsG[x][y].setData(Qt::DisplayRole, QString::number(nbV));
        }
        //Définition du contenu de la cellule de somme
        CellsG[x][listeTAD.size()-1].setData(Qt::DisplayRole, QString::number(sommeV));
    }
//Remplissage du tableau
    for (int x = 0; x < listeCrit.size()-1; x++)
    {
        for (int y = 0; y < listeTAD.size()-1; y++)
        {
            OngletGQTW->setItem(x, y, &CellsG[x][y]);
        }
    }
A savoir que LInventaire est une instance de ma classe Item, et la méthode countG est définie ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
int Item::countG(QString critereTAD, int critereCrit)
{
    int count;
    for (int x = 0; x < this->size(); x++)
    {
        if (((m_tad[x]) == critereTAD) && ((m_criticite[x]) == critereCrit))
            count++;
    }
    return count;
}
Autre info: les valeurs de nbV sont de 225.000 environ, alors que je devrai avoir tout au plus 1500... Donc... Les valeurs ne sont pas franchement bonnes non plus ^^'


Merci par avance!

Nihi