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 :

Refresh ne fonctionnant pas [Graphics View]

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 3
    Par défaut Refresh ne fonctionnant pas
    Bonjour,

    depuis quelques temps, j'essaie la 2D avec Qt, malheureusement, je rencontre un problème qui me bloque complétement. Lors d'un clique sur le Graphics View, je n'arrive pas à dessiner un carré dans la zone. En cherchant dans la doc, je suis tombé sur update(); et repaint(); mais ça n'a rien donné chez moi.

    Voici mon code :

    GraphicsView.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <QtGui>
     
    class GraphicsView : public QGraphicsView
    {
    public:
        GraphicsView();
    protected:
        void mousePressEvent(QMouseEvent *event);
    private:
        QGraphicsScene *scene;
        QGraphicsView *vue;
     
    };
    GraphicsView.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
    #include "GraphicsView.h"
     
    GraphicsView::GraphicsView()
    {
        scene = new QGraphicsScene;
        vue = new QGraphicsView(scene);
    }
     
    void GraphicsView::mousePressEvent(QMouseEvent *event)
    {
        QMessageBox::information(this, "info", "tu as cliqué");
        QRect rectangle(10, 10, 100, 50);
        scene->addRect(rectangle);
        scene->update();
        vue->repaint();
    }
    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <QApplication>
    #include "GraphicsView.h"
     
    int main(int argc, char* argv[])
    {
        QApplication app(argc, argv);
     
        GraphicsView vue;
        vue.show();
     
        return app.exec();
    }
    Si vous voyez un truc choquant dites-le moi, ce problème commence vraiment à me frustrer

    Laërte

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2010
    Messages : 243
    Par défaut
    Oui un gros :p

    Tu as deux QGraphicsView, celle dont GraphicsView hérite (et qui est celle qui est affichée via show()), et l'autre "vue" dans laquelle tu dessines...

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 3
    Par défaut
    aoutch

    mais de ce fait, comment je peux spécifier à ma QgraphicsView que je lui inclus un QGraphicsScene ? Il faut aussi réimplanter la fonction ?

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


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

    Un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    GraphicsView::GraphicsView()
    :QGraphicsView(new QGraphicsScene())
    {
        scene = this->scene(); // Est ce qu'il y a toujours besoin de garder une scene en local ?
    // Plus besoin de vue
    }
    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.

  5. #5
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2010
    Messages : 243
    Par défaut
    Citation Envoyé par Laërte Voir le message
    aoutch

    mais de ce fait, comment je peux spécifier à ma QgraphicsView que je lui inclus un QGraphicsScene ? Il faut aussi réimplanter la fonction ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maVue->setScene(maScene)
    tout simplement

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 3
    Par défaut
    Merci pour la réactivité et merci de m'avoir aidé.

    Bonne journée,
    Laërte

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/01/2004, 11h14
  2. [FP]Writeln ne fonctionne pas !
    Par néo333 dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 01/11/2003, 23h47
  3. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04
  4. Un Hint sur un PopupMenu ne fonctionne pas !!??
    Par momox dans le forum C++Builder
    Réponses: 6
    Dernier message: 26/05/2003, 16h48
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

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