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

Qt Discussion :

Modèle/vue , modèle personnalisé


Sujet :

Qt

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 5
    Points : 11
    Points
    11
    Par défaut Modèle/vue , modèle personnalisé
    Bonjour,

    Je débute avec QT et je désire utilisé l'architecture Modèle/Vue fourni par QT. En fait je dispose d'une classe Joueur avec comme attribut un nom et un age (je simplifie à l'extrême), je voudrais afficher ma liste des joueurs dans un tableau.

    J'ai donc crée une classe ModeleJoueur héritant de QAbstractTableModel, j'ai implémenté les différentes méthodes nécessaires comme :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int rowCount(const QModelIndex & parent) const;
        int columnCount(const QModelIndex & parent ) const;
        QVariant data(const QModelIndex &index,int role ) const;

    Cette classe dispose d'un vecteur contenant les instances de mes différents joueurs.

    La fonction data retourne soit le nom soit l'age en fonction de l'index passé en paramètre. Voila pour les brèves explications nécessaires. Tout marche parfaitement.
    En fait mon problème est que je n'arrive pas à supprimer les cases à cocher qui sont ajoutés automatiquement


    Merci d'avance pour vos réponses.

  2. #2
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Tu peux montrer comment tu arrives exactement a ce qu'on vois dans ton images ?

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 5
    Points : 11
    Points
    11
    Par défaut
    Ma classe JoueurModele héritant de QAbstractTableModel :

    Le .h :

    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
    #include <vector>
     
    using  namespace std;
     
    class JoueurModele : public QAbstractTableModel
    {
        vector<Joueur> tabJoueur;
    public:
        JoueurModele();
     
        void add(Joueur & _j);
     
        int rowCount(const QModelIndex & parent) const;
        int columnCount(const QModelIndex & parent ) const;
        QVariant data(const QModelIndex &index,int role ) const;
    //    QVariant headerData(int section, Qt::Orientation orientation, int role) const;
     
     
    };
     
    #endif // JOUEURMODELE_H
    le .cpp :

    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
    JoueurModele::JoueurModele()
    {
    }
     
    int JoueurModele::rowCount(const QModelIndex &parent = QModelIndex()) const
    {
        return tabJoueur.size();
    }
     
    int JoueurModele::columnCount(const QModelIndex &parent = QModelIndex()) const
    {
        return 2;
    }
     
    QVariant JoueurModele::data(const QModelIndex & index,int role) const
    {
     
     
           switch(index.column()){
     
                case 0: return QVariant( ((Joueur)tabJoueur.at(index.row())).getNom());
                case 1: return QVariant( ((Joueur)tabJoueur.at(index.row())).getAge());
            }
     
    }
     
     
    void JoueurModele::add(Joueur & _j)
    {
        tabJoueur.push_back(_j);
    }
    Le code dans la fenetre principale :

    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
    modJ = new JoueurModele();
     
        QString aa = "René";
     
        Joueur j(aa,25);
     
        modJ->add(j);
     
        Joueur j2(QString("Paul"),10);
        modJ->add(j2);
     
     
      //  QDirModel *modele = new QDirModel;
     
        this->tableJoueurs->setModel(modJ);
    tableJoueurs est le nom de ma QTableView crée via l'éditeur graphique.

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 5
    Points : 11
    Points
    11
    Par défaut
    J'ai eu la réponse sur un autre forum (sdz pour ne pas le citer ), donc voici la solution :

    Il faut envoyer un QVariant invalide (donc sans paramètre) pour les cas qu'on ne gère pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    QVariant TonModele::data(const QModelIndex &index,int role ) const
    {
      if (!index.isValid())
        return QVariant();
      if (role == Qt::EditRole || role == Qt::DisplayRole)
      {
         return laValeurPour(index.row(), index.column());
      }
      return QVariant();
    }


    Les checkboxes sont affichées si on renvoie quelque chose lorsque role == Qt::CheckStateRole.

  5. #5
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Merci pour cette infos. Elle servira surement a plusieurs personnes.

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

Discussions similaires

  1. Modéle Vue Contrôleur (MVC)
    Par mine87 dans le forum ALM
    Réponses: 2
    Dernier message: 08/01/2010, 17h00
  2. [MVC] Communication Modèle, Vue
    Par dahtah dans le forum MVC
    Réponses: 4
    Dernier message: 25/10/2007, 17h25
  3. Champ de texte et MVC (modèle vue contrôleur)
    Par three minute hero dans le forum Windows
    Réponses: 1
    Dernier message: 22/02/2007, 11h04
  4. Delphi 2006 Win32 Vue modèle
    Par rthriller dans le forum Outils
    Réponses: 3
    Dernier message: 29/12/2005, 19h08
  5. [JSP][Servlet][Javabean] Modèle Vue Controleur
    Par ay_pepito dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 04/02/2004, 10h05

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