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

 C++ Discussion :

Problème utilisation fonction protected


Sujet :

C++

  1. #1
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 446
    Points : 43 088
    Points
    43 088
    Par défaut Problème utilisation fonction protected
    Bonjour,

    J'ai 1 soucis d'utilisation de la fonction drawBackGround d'un objet QGraphicsScene avec Qt.

    Je pense que j'ai un problème de compréhension C++

    Voici mon code résumé à l'essentiel:

    fichier mycode.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class Mycode : public QMainWindow
    {
      Q_OBJECT
     
    myscene           *scene;
    scene = new myscene();
    QPixmap pix=QPixmap::fromImage(image);
    QPainter *painter=new QPainter(&pix); 
    const QRectF rectangle=scene->sceneRect();
    scene->drawBackground(painter,rectangle);
    };
    fichier mycode_myscene.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class myscene : public QGraphicsScene
    {
    public:
      myscene();
      ~myscene();
    protected:
      virtual void drawBackground( QPainter * painter, const QRectF & rect );
    fichier mycode_myscene.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
     
    #include <QtGui>
    #include "mycode_myscene.h"
     
    myscene::myscene()
    {
      qDebug()<<"construction";
    }
     
    myscene::~myscene()
    {
      qDebug()<<"destruction";
    }
     
    virtual void myscene::drawBackground( QPainter * painter, const QRectF & rect )
    {
      qDebug()<<"acces drawbackground";
    }
    prototype fonction dans la doc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void QGraphicsScene::drawBackground ( QPainter * painter, const QRectF & rect ) [virtual protected]
    erreur de compilation :

    mycode_myscene.h:7:6: erreur: 'virtual void myscene::drawBackground(QPainter*, const QRectF&)' is protected
    mycode.h:154:46: erreur: à l'intérieur du contexte
    Je précise que je ne suis pas développeur de métier et donc pas pro en C++

    Je veux juste utiliser la fonction drawBackground.

    Merci pour votre aide.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Euh, les instructions en ligne 7 et 11 ne peuvent pas figurer directement dans la définition d'une classe, il me semble...


    Pour myscene, je dirais que tu devrais faire une fonction publique dedans, qui appelle l'autre... Mais je ne connais pas Qt, donc je peux me tromper.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 852
    Points : 2 298
    Points
    2 298
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class Mycode : public QMainWindow
    {
      Q_OBJECT
     
    myscene           *scene;
    scene = new myscene();
    QPixmap pix=QPixmap::fromImage(image);
    QPainter *painter=new QPainter(&pix); 
    const QRectF rectangle=scene->sceneRect();
    scene->drawBackground(painter,rectangle);
    };
    C'est un fichier header ca ?

    Si c'est le cas : pourquoi il y a du code en dehors de methode qui se balade dans ta classe ?

    Si c'est pas le cas : la macro Q_OBJECT n'a rien a faire la. Tu devrais garder dans des variables membres de ta classe tous les pointeurs que tu initialises a l'interieur (sinon fuite memoire).

    Pour ce qui est de drawBackground, tu dois l'appeler a l'interieur de ta classe myscene. Exemple :

    .hpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class myscene : public QGraphicsScene
    {
    public:
      myscene();
      ~myscene();
      void myDrawBackground( QPainter * painter, const QRectF & rect );
     
    protected:
      void drawBackground( QPainter * painter, const QRectF & rect );
    };
    .cpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void myscene::myDrawBackground( QPainter * painter, const QRectF & rect )
    {
      this->drawBackground(painter, rect);
    }

Discussions similaires

  1. Problème utilisation fonction javascript en c#
    Par xavpiaf dans le forum ASP.NET
    Réponses: 2
    Dernier message: 18/06/2008, 16h47
  2. [STL] Débutant : problème utilisation fonction Sort
    Par marcootz dans le forum SL & STL
    Réponses: 5
    Dernier message: 29/08/2007, 20h19
  3. Problème utilisation fonction en boucle
    Par Iskander81 dans le forum C
    Réponses: 8
    Dernier message: 29/06/2007, 12h05
  4. problème utilisation fonction openSSL
    Par sneb5757 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 30/04/2007, 16h49
  5. [Mail] problème utilisation fonction mail()
    Par leclone dans le forum Langage
    Réponses: 3
    Dernier message: 20/02/2007, 18h05

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