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 :

Problème d'héritage de QWidget


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 38
    Par défaut Problème d'héritage de QWidget
    Bonjour tout le monde,
    j'aimerais savoir pourquoi la position de l heritage de la classe QWidget est importante...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Ogre_application : public QWidget, public Ogre::FrameListener, public Ogre::WindowEventListener, public OIS::KeyListener, public OIS::MouseListener, OgreBites::SdkTrayListener
    {
    	Q_OBJECT
    ...}
    fonctionne alors que ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Ogre_application : public Ogre::FrameListener, public Ogre::WindowEventListener, public OIS::KeyListener, public OIS::MouseListener, OgreBites::SdkTrayListener,public QWidget
    {
    	Q_OBJECT
    ...
    }
    me renvoie une erreur de moc:

    1>moc_ogre_application.cpp
    1>.\GeneratedFiles\Debug\moc_ogre_application.cpp(41) : error C2039: 'staticMetaObject' : n'est pas membre de 'Ogre::FrameListener'
    include\ogre\OgreFrameListener.h(83) : voir la déclaration de 'Ogre::FrameListener'
    1>.\GeneratedFiles\Debug\moc_ogre_application.cpp(70) : error C2039: 'qt_metacast' : n'est pas membre de 'Ogre::FrameListener'
    \ogresdk_vc8_v1-7-1\include\ogre\OgreFrameListener.h(83) : voir la déclaration de 'Ogre::FrameListener'
    1>.\GeneratedFiles\Debug\moc_ogre_application.cpp(76) : error C2039: 'qt_metacall' : n'est pas membre de 'Ogre::FrameListener'
    1\include\ogre\OgreFrameListener.h(83) : voir la déclaration de 'Ogre::FrameListener'
    1>moc_ogre_widget.cpp

  2. #2
    Membre chevronné
    Avatar de haraelendil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 283
    Par défaut
    Qt repose sur des meta-objets (d'ou la macro Q_OBJECT et me moc), ce qui permet de faire plein de choses, mais impose aussi quelques contraintes.

    Les deux principales concernant l'héritage sont qu'une classe héritant d'un QObject (ou un de ces dérivés, comme ici QWidget) ne doit hériter que d'un seule QObject, et celui-ci doit être le premier dans la déclaration d'héritage, sous peine de faire raler le moc.

    En gros pas trop le choix, c'est comme ça et pi c'est tout^^

    PS: y a peut-être d'autres restrictions dues aux meta-objets, mais je ne les ai jamais rencontrées.

  3. #3
    Membre confirmé

    Inscrit en
    Décembre 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 171
    Par défaut
    Pourquoi est ce que tu utilises les WindowEventListener, OIS::KeyListener, IS::MouseListener et compagnie ? Tu as tout ce qu'il faut dans la QWidget.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 38
    Par défaut
    Bonsoir tout le monde,
    désolé de repondre aussi tardivement,
    donc effectivement, le moc, n'est pas capable de fonctionner si la première classe héritée n'est pas un QObject (ou descendant).(Merci haraelendil,et sysedit autre forum )

    Si je voulais utiliser la librairie OIS (Ogre),c'est parceque le système de déplacement dans une map est deja programmé(cameraMan), et je voulais evitait de perdre du temps à reprogrammer les QMouseEvent, enfin bref ... au final je vais devoir m'y coller, parce que je n'arrive pas a faire fonctionner ces listener...puis les tuto fornis sur qt et ogre ne fournisse qu'un systeme de déplacement selon les axes (x,-x,y,-y,z,-z) ce qui n'etait pas genial...

    Merci a vous encore

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

Discussions similaires

  1. [C#] Problème d'héritage, aide svp :(
    Par choas dans le forum Windows Forms
    Réponses: 12
    Dernier message: 06/05/2006, 11h46
  2. problème constructeur + héritage
    Par BOLARD dans le forum C++
    Réponses: 10
    Dernier message: 13/04/2006, 08h11
  3. [AS2] Problème d'héritage
    Par wwave dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 27/01/2006, 09h26
  4. Problème d'héritage ?
    Par Romanops dans le forum WinDev
    Réponses: 2
    Dernier message: 16/11/2005, 17h18
  5. Problème d'héritage d'une méthode protégée
    Par shenron666 dans le forum C++
    Réponses: 9
    Dernier message: 28/04/2005, 23h17

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