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 :

Problème d'héritage avec Q_OBJECT

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 66
    Points : 50
    Points
    50
    Par défaut Problème d'héritage avec Q_OBJECT
    Bonjour,

    dans le cadre d'un projet, j'essaie de profiter de l'héritage pour simplifier certaines routines (et la redondance du code).
    Sauf que même si tout compile bien, lorsque je fais un new de ma nouvelle classe, je reçois un message pas sympathique du tout :
    Unhandled exception at 0x500f4dfa in monprojet.exe 0xC00000005: Access violation reading location 0xcdcdcdd1

    C'est moche!!!!
    Je dois certainement faire une erreur bête mais comme je n'ai pas réussi à identifier la cause, me voilà après une recherche infructueuse internet...

    Voici l'architecture (l'erreur d'après le debuggeur arrive dans Q_OBJECT
    Ma classe abstraite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class TypeWidgetUI : public QWidget, protected Ui::TypeWidget_Form
    {
    	Q_OBJECT
     public:
      TypeWidgetUI();
      TypeWidgetUI(QWidget* parent);
     
      protected slots:
        void on_addButton_clicked();
     
       protected:
    	virtual void actionButton()=0;//to redefine in each child
    le cpp associé (simplifié) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     TypeWidgetUI::TypeWidgetUI(){}
     TypeWidgetUI::TypeWidgetUI(QWidget* parent):QWidget(parent){}
     
    TypeWidgetUI::on_addButton_clicked(){
    actionButton();
    }
    Et une de mes classes héritées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class ObserverWidgetUI : public TypeWidgetUI
    {
    public:
    	ObserverWidgetUI();
     
      protected:
        void actionButton();
     
     
    };
    et le .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
     
    ObserverWidgetUI::ObserverWidgetUI():TypeWidgetUI(observer){
    	typeName->setTitle(tr("Observers"));
    }
     
    void ObserverWidgetUI::actionButton(){
    	QMessageBox *box = new QMessageBox(tr("Question"), tr("Do you want to add an existing observer or create a new one?"), QMessageBox::NoIcon, QMessageBox::Open, QMessageBox::Apply, QMessageBox::Cancel);
        box->button(QMessageBox::Open)->setText(tr("Add"));
    	box->button(QMessageBox::Apply)->setText(tr("New"));
    	int valueButton = box->exec();
      if(valueButton == QMessageBox::Open){
    	  QString fileName = QFileDialog::getOpenFileName(this,
    		tr("Choose ")+ _typeName +tr(" file"), 
    		QString("c:/tmp/"), 
    		tr("Scilab files")+" (*.sce)"); 
    	  if(!fileName.isEmpty() && QFile::exists(fileName)){
    		//call method to add a observer
    	}
     
      }
      else if(valueButton == QMessageBox::Apply){
    	  //call method to create a new observer
    	  //if ok call method to add a device
      }
      box->deleteLater();
    }
    La compilation fonctionne très bien mais je me casse les dents à l'exécution...

    Si vous avez une idée d'où vient le problème? (les fichiers moc sont bien générés pour la classe abstraite et la classe fille).
    J'hésite à ajouter Q_OBJECT dans la classe fille car je voudrais que les signaux ne soit gérés qu'au niveau de la classe mère (j'ai fait l'essai avec et sans et j'ai toujours le même échec à l'exécution - ce qui ne semble normal).

    Merci de votre aide

  2. #2
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 66
    Points : 50
    Points
    50
    Par défaut
    Bon, je savais que c'était une erreur bête ... j'ai honte

    J'avais oublié d'ajouter
    dans mes constructeurs de typeWidgetUI...

    Bref, bonne fin de journée

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

Discussions similaires

  1. Problème d'héritage avec powerAmc v15
    Par khalid95800 dans le forum Merise
    Réponses: 7
    Dernier message: 30/07/2013, 18h05
  2. problème d'héritage avec jpa
    Par info20111 dans le forum JPA
    Réponses: 0
    Dernier message: 03/06/2013, 10h59
  3. Problème d'héritage avec les génériques.
    Par ZZZzzz2 dans le forum Langage
    Réponses: 11
    Dernier message: 26/01/2012, 09h15
  4. Problème d'héritage avec ArrayList
    Par ghostdu69 dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 12/06/2011, 19h42
  5. Problème d'héritage avec une classe abstraite
    Par Ph.denis dans le forum C++
    Réponses: 7
    Dernier message: 22/03/2008, 10h37

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