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 :

Modele-Vue-Controleur sur une structure déjà existante sans être intrusif


Sujet :

Qt

  1. #21
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par epsilon68 Voir le message
    <WRONG>a ma connaissance ca marche</WRONG>
    EDIT: ha non t'as raison, alors on peut utiliser le typeid non? et puis faire un static_cast
    Normalement typeid ne devrais pas marcher non plus.


    hum je crois que tu n'as pas essayé de faire un model pour un tree, ai-je raison?
    non, c'est ce que j'essaie de faire pour vérifier ce que je dit.

    la personne à l'origine de ce post a donné sa structure de donnée au début,
    et c'est un arbre. c'est facile de parcourir cet arbre, c'est facile de donner des pointers, c'est facile de recuperer les enfants du noeud puisqu'on a toujours le pointer dans le QModelIndex.
    Je sais parcourir un arbre, c'est pas le problème. Mais là je suis un peu perdu. Je me suis basé sur l'exemple de Qt.

    Comme tu fait pour faire ton arbre? Tu utilise QTreeWidget ou QTreeView?

  2. #22
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    QTreeView, surtout pas l'autre ... on ne peut changer son model, il n'est fait que pour garder une certaine compatibilité avec Qt3

    J'ai juste remarqué un probleme, c'est qu'il faudrait connaitre le parent, mais la structure de données est une structure descendante seulement... c'est possible mais je n'ai pas d'idée geniale juste à l'instant.

  3. #23
    Membre émérite

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Par défaut
    De ce que je vois je suis obligé de savoir quel est le type de l'objet. Donc pour cela il faut faire du polymorphisme on en revient au problème de départ. Je pense donc faire ce que j'ai proposé au début cad modifier ma structure HalfEdge et rajouter une interface Node et l'utiliser dans mon modèle d'arbre pour parcourir facilement l'arbre (c'est un peu la classe utilitaire proposée par epsilon68 mais en plus propre je pense :p).

  4. #24
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    ... si tu le dis!

    moi je pense qu'il faudrait le faire sans modifier ta structure, car la memoire est precieuse, et ne devrait pas etre gaspillé juste pour eviter un static cast ou autre workaround.

    comme dit c'est toi qui voit ...

  5. #25
    Membre émérite

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Par défaut
    Citation Envoyé par epsilon68 Voir le message
    ... si tu le dis!

    moi je pense qu'il faudrait le faire sans modifier ta structure, car la memoire est precieuse, et ne devrait pas etre gaspillé juste pour eviter un static cast ou autre workaround.

    comme dit c'est toi qui voit ...
    Pour faire ta méthode il faut à un moment faire un typeid et pour que ça marche il faut... une méthode virtuelle. Donc autant faire comme j'ai dis au lieu de faire avec un work-around vu que de toute façon on sera obligé d'avoir le polymorphisme... non ?

  6. #26
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par epsilon68 Voir le message
    QTreeView, surtout pas l'autre ... on ne peut changer son model, il n'est fait que pour garder une certaine compatibilité avec Qt3

    J'ai juste remarqué un probleme, c'est qu'il faudrait connaitre le parent, mais la structure de données est une structure descendante seulement... c'est possible mais je n'ai pas d'idée geniale juste à l'instant.
    Donc en faite on parle de la même chose, sauf que l'on ne prend pas les même contrainte.
    Je suis partie sur l'idée de class interface par ce que :
    - son arbre se parcoure que dans un sens
    - un void* ne permet pas de retrouver ce qu'était l'objet
    - eviter un ensemble de if else if else if ... pour choisir ce qu'il faut faire

    Sinon, je suis tout à fait d'accord que tanEk ne devrais pas modifier ses structures uniquement si c'est pour l'ihm.

  7. #27
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    ok je pensais que typeid permettait de retrouver le type,
    je me suis trompé

    mais il ne faut pas refaire d'arbre ...

    par contre c'est tres problematique l'histoire du parent... qu'il faut absolument pour le treeview

  8. #28
    Membre émérite

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Par défaut
    La Face ne connait pas de parent car elle n'en a pas. L'half-edge connait son parent (la face), le sommet connait son parent (l'half-edge). Ou est le probleme ?

  9. #29
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    ok j'avais mal vu.

  10. #30
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par epsilon68 Voir le message
    mais il ne faut pas refaire d'arbre ...
    EN faite c'est pas vraiment un arbre sa structure. Le fait de créé un arbre pour l'affichage me choque pas temps que cela du coup, mais c'est vrais que pour la mise à jour cela semble moins évident....

    Citation Envoyé par epsilon68 Voir le message
    par contre c'est tres problematique l'histoire du parent... qu'il faut absolument pour le treeview
    oui surtout qu'il faut que le parent connaisse sa position par rapport à son parent

  11. #31
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    voilà ce que j'ai fait.
    J'ai refait trois struc qui forme une sorte de graph (comme les class tanEK)et je les affiches en créant un arbre interne à l'affichage.

    Cela permet de faire un affichage. Après pour ajouter les modification je ne sait pas trop. Cela ne me parait pas être si compliqué, mais effectivement y as une mise à jour à faire.

    Dsl y as pas de commentaire, mais si il y as des question, aucun problème
    Fichiers attachés Fichiers attachés

  12. #32
    Membre émérite

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Par défaut
    Ok merci je pense pouvoir m'en sortir maintenant .

  13. #33
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    ll y a une solution de faire heriter les triangles et les halfPlane avec une classe qui stoke le type avec un char (avec de la chance ce char sera absorbé par l'alignement) puis ensuite faire un static_cast en fonction du type.

    cette class "NodeType" n'aura pas besoin de faire des methodes virtuelles,
    juste offrir une class de base (pour le premier cast) pour recuperer le type:

    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
     
    class NodeType
    {
    public:
    	NodeType( int type ) : _type(type) {}
    	short int type() const { return _type; }
     
    private:
    	char _type;
    };
     
    class Triangle : public NodeType {
    public:
      Triangle() : NodeType(1) { ... }
    };
     
    class HalfPlane : public NodeType {
    public:
      HalfPlane() : NodeType(2) { ... }
    };
    puis les static_cast

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    NodeType* n = static_cast<NodeType*> (internal_pointer);
    if( p->type() == 1 ) {
      Triangle *t = static_cast<Triangle*>(n);
      // bla bla bla
    }
    else if( p->type() == 2 ) {
      // meme chose
    }

  14. #34
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par epsilon68 Voir le message
    ll y a une solution de faire heriter les triangles et les halfPlane avec une classe qui stoke le type avec un char (avec de la chance ce char sera absorbé par l'alignement) puis ensuite faire un static_cast en fonction du type.
    si ils ont une class mère commune le dynamic_cast suffira

  15. #35
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    bein non puisqu'il faut une methode virtuelle pour que cela marche....

  16. #36
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par epsilon68 Voir le message
    bein non puisqu'il faut une methode virtuelle pour que cela marche....
    ben non.
    Le dynamic_cast ser à caster correctement de la class mère vers une class enfant.
    Les methodes virtuels c'est juste pour du polymorphisme.

    [edit]
    ha non tiens , j'ai dit une connerie
    comme quoi on apprend des choses tous les jours

  17. #37
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    moi aussi j'en ai dit des bétises
    mais tant qu'on les admet, on progresse :-)

  18. #38
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    Citation Envoyé par TanEk Voir le message
    ... autant faire comme j'ai dis au lieu de faire avec un work-around vu que de toute façon on sera obligé d'avoir le polymorphisme... non ?
    non pas obligé

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Ponteurs sur une structure.
    Par echantillon dans le forum GTK+ avec C & C++
    Réponses: 8
    Dernier message: 13/02/2007, 18h26
  2. import sur une base deja existante
    Par crazykangourou dans le forum SQL
    Réponses: 2
    Dernier message: 09/01/2007, 10h14
  3. vecteur sur une structure
    Par sam_123 dans le forum C++
    Réponses: 6
    Dernier message: 25/01/2006, 07h30
  4. Memset sur une structure
    Par ghostdogpr dans le forum C
    Réponses: 4
    Dernier message: 16/12/2005, 13h43
  5. Réponses: 2
    Dernier message: 13/12/2005, 16h48

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