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 :

Afficher un personnage sur une carte


Sujet :

Qt

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2014
    Messages : 53
    Points : 30
    Points
    30
    Par défaut Afficher un personnage sur une carte
    Bonjour,

    j'ai crée une map en faisant une matrice, elle s'affiche très bien dans la fenêtre, maintenant je souhaiterais y ajouter un personnage. Pour cela, dans la constructeur de la classe du personnage, j'ai loader une image dans un QPixmap puis je l'ai ajouter dans un QPixmapItem. Je l'ai ensuite rajouté à ma scene. J'utilise la fonction setZValue afin que le personnage ne se trouve pas en dessous de la map ( pour la map j'ai aussi utilisé des QPixmapItem), mais le personnage ne s'affiche pas; j'ai donc vérifier les valeurs à l'aide la fonction zValue, elle renvoie bien la bonne valeur ; mais pas de personnage en vu. Voici le code du constructeur de mon personnage:

    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
     
    Princess::Princess(QGraphicsScene *scene)
    {
        perso.load("D:/copie/zelda.png");
        items.setPixmap(perso);
       //items.moveBy(100,30);
        //items.setPos(100,300);
       //scene-//>setFocusItem(&items,Qt::ActiveWindowFocusReason);
        items.setZValue(100);
        cout<<items.zValue()<<endl;
     
        scene->addItem(&items);
     
     
     
    }

    Le problème viendrait-il d'autre part que la superposition? (De plus, j'ai mis tous les items de ma map à un int plus faible que celui du personnage)

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    bonjour,
    ça ressemble à un problème pur Qt, plus que C++ général. A ta place j'aurais plutôt posté dans le forum Qt pour avoir plus de chance d'attirer l'attention des connaisseurs...

  3. #3
    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
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perso.load("D:/copie/zelda.png");
    Ce code retourne un booléen : quelle est sa valeur ? Après, il s'agit peut-être d'un problème de durée de vie. Si votre QGraphicsPixmapItem est détruit d'une manière ou d'une autre, alors il est logique que rien ne s'affiche. Pouvez-vous nous montrer un peu plus de code autour des variables utilisées dans l'extrait que vous nous proposez ?

    Bonne soirée,
    Louis
    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

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2014
    Messages : 53
    Points : 30
    Points
    30
    Par défaut
    Le perso.load me retourne 0.
    Voici le constructeur de ma classe Princess:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Princess::Princess(QGraphicsScene *scene)
    {
     
        cout <<"Constructeur de la princesse" << endl;
       bool alo= perso.load("D:/copie/zelda.png");
        cout <<alo<<endl;
        cout <<"l'image est bien loader" << endl;
        items.setPixmap(perso);
       items.setZValue(100);
        cout<<items.zValue()<<endl;
     
        scene->addItem(&items);
    }
    Dans 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
     
     
     
     
    class Princess : public Personnage {
     
    private :
     
    int i;
     
    public :
        QPixmap perso;
        QGraphicsPixmapItem items;
        void attack();
        Princess(QGraphicsScene *scene);
        ~Princess();
     
    };

    Et dans le main:
    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
     
     
     
     
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        //MainWindow w;
        //w.show();
        QGraphicsScene scene;
        QGraphicsView fenetre(&scene);
        Map map;
        map.RemplissageMap(&scene);
        cout<<"la scene est faite!"<<endl;
        Princess princess(&scene);
    }

  5. #5
    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
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonjour,

    Si votre load() retourne 0 (false), cela signifie juste que soit votre image est invalide, soit que le chemin que vous avez renseigné n'est pas accessible (problèmes de droits ou bien fichier introuvable).
    Vous pouvez faire un qDebug() << QFileInfo("D:/copie/zelda.png").exists(); avec #include <QDebug> pour voir si le fichier est trouvé par Qt, par exemple.

    Bonne journée,
    Louis
    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

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2014
    Messages : 53
    Points : 30
    Points
    30
    Par défaut
    Le QDebug renvoie true, ce n'est pas un problème de chemin car j'ai d'autres images dans ce fichier pour ma map et elles apparaissent à l'écran, je pensais que j'avais un problème au niveau de la superposition de mes items mais en utilisant la fonction setZValue, je n'ai pas vu de différence, je ne sais donc toujours pas pourquoi mon personnage ne s'affiche pas...

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Des petits tests a faire, dans la scène tu vois l'instance de ton personnage ?
    Si tu ne rempli pas la carte tu vois ton personnage ? (sur un fond blanc du coup)

    Ps : Princess, attack ... Un jeu de zelda ? ^^'

  8. #8
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2014
    Messages : 53
    Points : 30
    Points
    30
    Par défaut
    Oui c'est un jeu de Zelda! mais des années 80...
    En ce qui concerne mon problème, il est résolu, ce n'etait pas un problème de code, c'est l'image en elle-même qui avait un problème.

  9. #9
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Par parenthèse, ça pourrait valoir le coup d'intégrer un test qui arrête tout avec message de diagnsotic explicite si le chargement ne se passe pas bien (ou si tu considères la ressource comme secondaire, à minima émet un message d'erreur dans un fichier) centralisée dans une fonctionnalité de load...après tout charger une image c'est charger une image

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2014
    Messages : 53
    Points : 30
    Points
    30
    Par défaut
    J'avais fait ce test la qDebug() << QFileInfo("D:/copie/zelda.png").exists(); comme me l'avait conseillé une personne de ce forum et cela me renvoyait true, c'est a dire que le fichier existe. Je pense que le problème venait lors de l'affichage et pas du load. Merci pour le conseil j'y penserai à l'avenir.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 20/07/2012, 16h15
  2. [Google Maps] afficher plusieurs marker sur une carte
    Par l'coy dans le forum APIs Google
    Réponses: 7
    Dernier message: 24/04/2011, 07h32
  3. Vision d'un personnage sur une carte 2D
    Par angelkali dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 05/11/2008, 23h22
  4. [Geolocalisation] Afficher un parcours sur une carte en java
    Par Migosh59 dans le forum SIG : Système d'information Géographique
    Réponses: 1
    Dernier message: 28/08/2007, 11h51
  5. Réponses: 1
    Dernier message: 28/08/2007, 11h51

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