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 :

Ajout de données dans une QListView

  1. #1
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Par défaut Ajout de données dans une QListView
    Bonjour,
    Voilà,
    je veux travailler avec listview, de telle sort quand j'ajoute un objet le nom de cet objet et leur position seront ajouter à la liste
    Premièrement c'est la première fois que je vais utiliser cette classe
    j'ai basé sur un exemple mais , il reste des choses ne sont pas claire surtout que la fonction add object c'est une fonction dans une class autre où j'ai définie ma liste
    voilà ce que j'ai fait
    dans mainwindiws.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        #include "ogrewidget.h"  
        MainWindow::MainWindow()  
        {  
           ogreWidget = new OgreWidget(this);  
            setCentralWidget(ogreWidget);  
        .............................................  
         list_O = new QToolButton(page_13);              
                    list_O->setGeometry(QRect(30, 210, 101, 31));  
                    list_O->setText(QApplication::translate("MainWindow", "Object Liste", 0, QApplication::UnicodeUTF8));  
                    listView =new QListView(list_O);  
        listView->setModel(ogreWidget->add_object(offsetX,offsetY));//quands j'execute add object la liste dois mis à jours
    et dans ogrewiget.cpp (class ogrewidget)
    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
     
        OgreWidget::add_object(double offsetX ,double offsetY)  
        {  
        .............................................  
            model= new QStandardItemModel();  
            int i=1;  
            for(itr = result.begin() ;itr != result.end();++itr)  
              {  
                    if(itr->movable)  
                    {  
     
                        Node->_setDerivedPosition(mouseRay.getPoint(itr->distance));//içi j'ajoute l'objet  
                            Node->setScale(0.1f, 0.1f, 0.1f);  
                        QStandardItem *item=new QStandardItem(QString ("Node  %0").arg(i));  
                        model->appendRow(item);  
                        i++;  
     
                    }  
              }     
              return model;  
        }
    mais il ne m'affiche rien
    qu'est ce que j'ai oublié ?

  2. #2
    Membre éclairé
    Inscrit en
    Mars 2011
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 50
    Par défaut
    Bonjour,

    J'ai une fois utilisé ce genre de conteneur sous forme de treeview (casiment la même chose) j'avais aussi eu du mal à le faire réagir je crois si j'ai bonne mémoire qu'il faut reconstruire le tout le model à chaque changement.

    Ensuite est-ce que ton model contient quelque chose ? result n'est-il pas vide ? ton test fonctionne ? la valeur de i au return ?

    car j'ai comparé avec le code que j'avais fait ça me semble correct.

    knives

  3. #3
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Par défaut
    merci pour ton réponse
    en effet le test n'est pas réussi,
    je crois parce qu'il existe un problème dans la création de modèle et le vue
    il y a pas un contact entre les deux ,
    le modèle est crée et mis à jours dans la class ogrewidget mais le vue (listview) est crée dans la class mainwindow

    tu es sûre que tu a fait presque comme je vais faire (deux class ...) parce que tout les exemples qui j'ai les vus ils crée le modèle et le vus dans la même classe

  4. #4
    Membre éclairé
    Inscrit en
    Mars 2011
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 50
    Par défaut
    Je te passe le code que j'avais fais

    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
    void FormListeObjet::setListeGroup(QStringList listElement)
    {
        QStringList listGroup;
        model->clear(); // vide le model à afficher
        for (int i = 0; i < listElement.size() ; i++)
        {
            QStandardItem *parent = new QStandardItem(listElement.at(i)); // créer l'élément parent (nom élément)
     
            listGroup = controller->listGroupFromElement(listElement.at(i)); // recherche les fils
     
            if (listGroup.size() > 1)
            {
                QList<QStandardItem *> childs;
                for (int j = 0 ; j < listGroup.size() ; j ++)
                {
                    childs.append(new QStandardItem(listGroup.at(j))); // créer les fils
                }
                for (int j = 0 ; j < childs.size() ; j ++)
                {
                    childs.at(j)->setEditable(false);
                }
                parent->appendRows(childs); // ajoute les fils au père
            }
            model->appendRow(parent);
        }
        treeView->setModel(model);
    }
    Le model n'est pas réinstancier car j'en avais besoin plus trad pour une sélection et est membre de la class. Sinon c'est dans la même class je récupère les éléments via le controler sous form de QStringList.

    Après je pense pas qu'il faut le faire dans la même class car c'est juste une référence. Essai avant de faire le changement de model de supprimer le précédent (comme ici).

    Sinon pour faire un teste (un peu moche) tu essai de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    QStandardItem *item=new QStandardItem(QString ("1"));  
    model->appendRow(item);  
    QStandardItem *item2=new QStandardItem(QString ("2"));  
    model->appendRow(item2);
    à la place de ta boucle

    voilà j'espère que ça va t'aider

    knives

  5. #5
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Par défaut
    Merci infiniment
    c'est résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajout de données dans une liste d'un formulaire
    Par Elstak dans le forum Access
    Réponses: 1
    Dernier message: 09/08/2006, 15h53
  2. Ajout de données dans une requête
    Par remi59 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 15/06/2006, 10h30
  3. Réponses: 8
    Dernier message: 24/02/2006, 09h59
  4. ajouter des données dans une requête htttp en js
    Par jeromejanson dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/10/2005, 15h34

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