IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

QTableWidgetItem non visible dans un QTableWidget ?

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Front
    Inscrit en
    Décembre 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Front
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 59
    Par défaut QTableWidgetItem non visible dans un QTableWidget ?
    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

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 136
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    Quel est le problème, précisément ?
    Le titre parle d'un élément non visible, mais vous n'en parlez plus par la suite.
    Dans la discussion, vous signaler une valeur fausse

    Affichez les valeurs nbV successivement et je pense que vous comprendrez mieux l'erreur. (sinon, à l'aide d'un point d'arrêt, dans le débogueur.)
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Front
    Inscrit en
    Décembre 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Front
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 59
    Par défaut
    C'est fait, et c'est justement là que je tombe sur ces fameux 220000... Et ce qui est invisible, c'est les QTableWidgetItem que je positionne dans le QTableWidget par la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    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]);
            }
        }
    Et les cellules remplies n'apparaissent pas...

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 136
    Billets dans le blog
    150
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QTableWidgetItem CellsG[listeTAD.size()][6];
    Fait que les cellules sont détruites à la sortie de la fonction (locales au bloc). Du coup, elles vont disparaitre (ne plus exister).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Front
    Inscrit en
    Décembre 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Front
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 59
    Par défaut
    Je l'ai pourtant mit en attribut, sur le .h associé. Il devrait donc être gardé, non? Ou alors je dois faire un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QTableWidgetItem *CellsG[listeTAD.size()][6] = new QTableWidgetItem ;
    , mais bien syntaxé?

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 136
    Billets dans le blog
    150
    Par défaut
    Même s'il est en attribut, cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QTableWidgetItem CellsG[listeTAD.size()][6];
    Recouvre et cache l'attribut de même nom de la classe (car elle est du contexte le plus proche).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. bmp non visible dans un bouton avec texte
    Par CAMIC dans le forum Windows
    Réponses: 8
    Dernier message: 27/03/2007, 10h24
  2. Réponses: 8
    Dernier message: 04/01/2007, 10h15
  3. Redirection URL Non visible dans la barre d'adresse
    Par domileg dans le forum Langage
    Réponses: 5
    Dernier message: 04/08/2006, 09h02
  4. Composants non visible dans certaines applications
    Par chtom dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 22/03/2006, 17h33
  5. Réponses: 2
    Dernier message: 12/01/2006, 14h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo