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 :

[MVC] Comment s'organiser ?

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 28
    Par défaut [MVC] Comment s'organiser ?
    Bonjour

    Je suis en phase d'apprentissage du mvc de Qt et je me pose des questions
    concernant l'articulation des classes.
    Comme indiqué à la fin de cette page : http://qt-project.org/doc/qt-4.8/mod...ogramming.html ,
    je souhaite séparer le stockage des données, du modèle utilisé pour le mvc.

    Exemple :

    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
    class MesDonnees {
    private:
     QList lesDonnees;
     DonneesModel* model;
    public: 
     void addDonnee(uneValeur);
      MesDonnees{ model=new DonneesModel();}
    }
     
    class DonneesModel : QAbstractListModel {
     
    }
     
    class DonneesView : QAbstractItemView {
     
    }
     
    MainWindow::MainWindow(){
       MesDonnees* donnees = new MesDonnees();
       DonneesView* view = new DonnneesView(this);
       view->setModel(MesDonnees->getModel());
    }
    Les classes ci-dessus ne probablement compilent pas, elles sont minimales pour donner l'idée.
    Si je désire insérer un élément dans mesDonnees, quelle solution dois-je employer pour
    que les vues soient notifiées ? Dois-je implémenter une fonction addItem sur le modèle qui
    repercute sur addDonnee de MesDonnees et appeler une fonction de notification (laquelle ?) ?
    Dois-je appeler directement MesDonnees->addDonnee qui se charge de faire un appel sur le modèle
    pour la notification ?
    Autre chose ?

    Merci
    Henri

  2. #2
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Par défaut
    Bonjour,

    Dans le cas présent, l'approche MVC consiste en la séparation des données de la vue en passant par un modèle. En gros, le modèle (StringListModel, [...]Model ou autre type de dérivée de QAbstractListModel) va servir à contenir les données sans gérer l'affichage. L'affichage est entièrement gérée par le QListView/autre dérivée de QAbstractListView.

    Selon les données que vous souhaitez gérer, vous pouvez donc soit utiliser une dérivée existante de QAbstractListModel et de QAbstractListView, soit réimplémenter l'un et/ou l'autre. Tout dépend de vos besoins.

    Pour la notification de changement dans le modèle dans la vue, vous avez ceci que vous pouvez soit laisser tel qu'il est par défaut, soit réimplémenter dans une sous-classe (il me semble que c'est bien de cela qu'il s'agit) :

    void QAbstractItemView::dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) [virtual protected slot]

    This slot is called when items are changed in the model. The changed items are those from topLeft to bottomRight inclusive. If just one item is changed topLeft == bottomRight.
    Du côté du modèle, vous disposez d'un bon nombre de signaux :

    http://qt-project.org/doc/qt-4.8/qab...l.html#signals

    Bonne continuation,
    Amnell.
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 28
    Par défaut
    Ok, merci de votre réponse.

    Henri

Discussions similaires

  1. Hébergement gratuit. Comment s'organiser?
    Par Darwick dans le forum Langage
    Réponses: 2
    Dernier message: 17/05/2007, 14h53
  2. Site web MVC : Comment gérer le contrôleur frontal ?
    Par HALOMOTO dans le forum Langage
    Réponses: 5
    Dernier message: 10/10/2006, 17h59
  3. [Méthodologie] Comment s'organiser pour programmer?
    Par Donaldo dans le forum Méthodes
    Réponses: 5
    Dernier message: 04/05/2006, 00h38
  4. [SWT][MVC] Comment séparer métier et présentation
    Par pyorg dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 27/08/2004, 18h21
  5. [Threads]Comment les organiser pour un jeu du serpent ?
    Par Pill_S dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 11/05/2004, 15h22

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