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 :

Mise à jour de l'affichage


Sujet :

Qt

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 16
    Points : 8
    Points
    8
    Par défaut Mise à jour de l'affichage
    Bonsoir,

    Je code en ce moment un espèce de plateau avec des pions dessus, pour le moment c'est très basique (mais c'est déjà beaucoup découpé ^^)

    Je place un "etre" (hérité de QObject) dans un "monde" hérité de QGraphicsScene de la manière suivante :

    etre.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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #ifndef ETRE_H
    #define ETRE_H
     
    #include <QObject>
    #include <QColor>
    #include <QRectF>
     
    class Etre : public QObject
    {
        Q_OBJECT
     
    public:
        Etre();
        ~Etre();
     
        int GetX() {return x;}
        int GetY() {return y;}
     
        QRectF GetRect() {return *rect;}
        QColor GetColor() {return color;}
     
        //fonction de déplacement
        void Translate(int dx, int dy);
        void MoveTo(int X, int Y);
     
    signals:
        void AppelMAJTerrain();
     
    private:
        int x;
        int y;
        QColor color;
        QRectF *rect;
    };
     
    #endif // ETRE_H

    etre.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
    32
    33
    34
    35
    36
    37
    38
     
    #include "etre.h"
    #include <QDebug>
     
    Etre::Etre()
    {
        x = 5;
        y = 3;
     
        color = QColor(255, 0, 0);
     
        rect = new QRectF();
        rect->setWidth(50);
        rect->setHeight(50);
     
        this->MoveTo(x,y);
    }
     
    Etre::~Etre()
    {
        delete rect;
    }
     
    void Etre::Translate(int dx, int dy)
    {
        rect->translate(dx*50,dy*50);
        x += dx;
        y += dy;
        emit AppelMAJTerrain();
    }
     
    void Etre::MoveTo(int X, int Y)
    {
        x = X;
        y = Y;
        rect->moveTo(x*50,y*50);
        emit AppelMAJTerrain();
    }

    monde.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
    22
    23
    24
    25
    26
     
    #ifndef MONDE_H
    #define MONDE_H
     
    #include <QGraphicsScene>
    #include <QRect>
    #include "etre.h"
     
    class Monde : public QGraphicsScene
    {
        Q_OBJECT
     
    public:
        explicit Monde(QObject *parent = 0);
        ~Monde();
     
    signals:
     
    public slots:
        void MAJ();
     
    private:
        Etre *etre1;
    };
     
    #endif // MONDE_H
    monde.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
    32
     
    #include "monde.h"
    #include <QDebug>
     
    Monde::Monde(QObject *parent) :QGraphicsScene(parent)
    {
        //construction du tableau de lignes A METTRE EN FONCTION
        for(int i = 0; i < 11; i ++)
        {
            this->addLine(0,i*50,500,i*50);
            this->addLine(i*50,0,i*50,500);
        }
     
        //test avec un etre
        etre1 = new Etre;
        this->addRect(etre1->GetRect(),QPen(),QBrush(etre1->GetColor()));
     
        QObject::connect(etre1,SIGNAL(AppelMAJTerrain()),this,SLOT(MAJ())); //connexion pour mise à jour
     
        etre1->MoveTo(4,2);
        etre1->Translate(2,-1);
    }
     
    Monde::~Monde()
    {
        delete etre1;
    }
     
    void Monde::MAJ()
    {
        this->advance(); //ici normalement mise à jour
    }


    Mon problème est que la fonction advance qui est censé me mettre à jour mon affichage (j'ai déjà réussi certains tests avec) ne me fait plus rien ici, c'est fort facheux. ^^

    L'idée de mon code est que c'est l'etre qui va se bouger et dire un monde "youhou met toi à jour !" c'est pour cela que je procède ainsi

    Si vous avez une petit idée de méthode ou de fonction je suis preneur , merci d'avance !

    Peace

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Re bonjour,

    Je souhaitais apporter des éléments sur mon problème afin de peut-être vous permettre de me proposer une autre approche à mon problème, sur lequel je bloque toujours

    Mon idée est de faire une sorte de monde qui évolue suivant une base de temps. Je pensais donc appeler avec Qt un timer pour activer mon être au moment voulu en bouclant...

    Cependant il semble qu'il existe un moyen de faire ce travail avec Qt (mais je n'en sais pas plus pour le moment, si vous avez des idées de classe que je pourrais utiliser ^^).

    Voilà voilà, merci d'avance !

Discussions similaires

  1. Dessiner en Wpf et mise à jour de l'affichage
    Par Orc_Fayeh dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 11/04/2008, 11h51
  2. Mise à jour de l'affichage des messages
    Par emmy99 dans le forum Langage
    Réponses: 8
    Dernier message: 28/01/2008, 19h36
  3. Mise à jour de l'affichage
    Par piteon dans le forum 2D
    Réponses: 8
    Dernier message: 13/02/2007, 11h59
  4. Mise à jour de l'affichage de la fenêtre
    Par YuGiOhJCJ dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/12/2006, 10h55
  5. [JTree] Mise à jour de l'affichage
    Par freddy766 dans le forum Composants
    Réponses: 3
    Dernier message: 16/10/2006, 10h39

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