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 :

Problème de récupération de QList<QGraphicsItem *> dans une autre classe [Graphics View]

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Par défaut Problème de récupération de QList<QGraphicsItem *> dans une autre classe
    Bonjour à tous,

    Et Bonne Année à tous.

    C'est la première fois que je poste ici.
    Car j'aime mieux me dépatouiller pour trouver mon problème mais là je coince vraiment et j'ai plus trop le temps (dans moins de 2 semaines je dois rendre ça ^^).

    Je ne sais pas trop si c'est bien dans cette partie ou dans la partie 2D/3D.

    J'ai un projet de 3D (OpenGL) à réaliser (école), c'est une architecture de maison en 3D (avec mon collègue on a vu trop grand ^^).

    J'ai réalisé dans un premier temps les objets en 2D grâce à l'exemple du "Diagram Scene" (lien ici http://qt.developpez.com/doc/4.7/gra...-diagramscene/)

    J'ai fait à ma dose, j'ai fais un drag & drop est ça marche bien. Tous les éléments 2D marchent bien.

    Mon problème:
    Je veux récupérer les éléments2D de ma scène 2D qui est un classe et récupérer cette liste d'élément 2D (avec leurs positions et leurs noms d'éléments) dans une autre classe enfin d'afficher ses éléments en 3D.

    Maintenant je voulais récupérer tous les éléments de ma scene2D.
    Grace à cette fonction, je récupère bien la liste des éléments.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     QList<QGraphicsItem *> Scene2D::Maliste(){
         return items();
     }
    Après je veux la mettre dans une autre classe pour récupérer cette liste d'élément (surtout la position des éléments et le nom de l'élément) afin d'afficher mes éléments en 3D.

    Voici le code complet de mon projet diagramscene.zip (il n'y a pas trop de commentaire pour l'instant).


    Le projet ne sera pas fini, car c'est juste un projet pour l'école, le plus important est que je récupère mes éléments en 2D pour le mettre dans la scène 3D.

    Les fichiers qui faut regarde sont "Scene2D.cpp" et "scene.cpp".

    Voilà Merci pour ceux qui m'aide.

  2. #2
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Par défaut
    Plus d'explication

    Ici je récupère bien ma liste de mes éléments de ma scène dans la classe "Scene2D.cpp"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QList<QGraphicsItem *> Scene2D::Maliste(){
         return items();
     }
    Enfaite, je veux récupérer cette liste dans ma classe "scene.cpp". Et c'est là le problème

    Explication:
    Je récupère bien ma liste de mes éléments de ma scène quand je suis dans la classe "Scene2D.cpp". Ca pause pas de problème là.
    Mais je veux reprendre cette liste pour la mettre dans une autre classe et c'est là le problème.

    Fichier "scene.h"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    .....
    class Scene : public QGLWidget
    {
    ....
    protected:
        .....
        QList<QGraphicsItem *> elem;
        Scene2D *sc;
    ....
    }
    Fichier "scene.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
     
    .....
    void Scene::paintGL()
    {
        //draw scene here
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glLoadIdentity();
        gluLookAt(this->_position.x(),this->_position.y(),this->_position.z(),
                          this->_target.x(),this->_target.y(),this->_target.z(),
                          this->_up.x(),this->_up.y(),this->_up.z());
     
        glTranslated(xPos, yPos, zPos);
        glRotatef( xRot, 0, 1, 0 );
     
        //c'est ici que je veux récupérer ma liste des élements 2D pour les afficher en 3D avec leur nom d'élément et leur position
        elem=sc->Maliste();
     
    }
    ....

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 151
    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 151
    Billets dans le blog
    150
    Par défaut
    Bonjour et bienvenue,

    J'aimerai avoir des précision sur le bogue que vous avez. Est-ce un crash ? ou juste que la fonction ne retourne aucun éléments ?
    Si c'est un crash, c'est surement car le pointeur "sc" est invalide.
    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.

  4. #4
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Par défaut
    Salut,

    C'est un crash du programme.

    Je ne vois pas pourquoi ça ne veut pas marcher

    Citation Envoyé par LittleWhite Voir le message
    Bonjour et bienvenue,

    J'aimerai avoir des précision sur le bogue que vous avez. Est-ce un crash ? ou juste que la fonction ne retourne aucun éléments ?
    Si c'est un crash, c'est surement car le pointeur "sc" est invalide.

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 151
    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 151
    Billets dans le blog
    150
    Par défaut
    Utilisez vous QtCreator ? Qu'indique le débogueur ? (lancez le programme compilé en debug, avec votre EDI)
    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.

  6. #6
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Par défaut
    En Exécution normal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Le programme s'est terminé subitement.
    \diagramscene-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug\debug\diagramscene.exe a quitté avec le code -1073741819
    En mode débogage (je ne comprends pas trop quand il marche aussi)
    Nom : 1.jpg
Affichages : 263
Taille : 138,4 Ko

    Puis j'ai fait F11
    Nom : 2.jpg
Affichages : 355
Taille : 161,2 Ko

    Je ne sais pas si c'est bien ça ce que tu veux

    Sinon j'ai passé tous mon projet dans le premier message



    Citation Envoyé par LittleWhite Voir le message
    Utilisez vous QtCreator ? Qu'indique le débogueur ? (lancez le programme compilé en debug, avec votre EDI)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/10/2012, 13h49
  2. Réponses: 1
    Dernier message: 24/08/2009, 12h03
  3. Problème thread dans une autre classe
    Par Shypster dans le forum C#
    Réponses: 19
    Dernier message: 06/03/2008, 09h23
  4. Réponses: 5
    Dernier message: 31/05/2007, 19h35
  5. Réponses: 10
    Dernier message: 17/11/2006, 15h20

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