2010-10-19 8 views
3

J'essaie de créer mon propre widget basé sur QWidget. Dans le constructeur de la classe j'ai:Qt widget basé sur QWidget

Square(QWidget *parent = 0, const char *name = 0, WFlags fl = 0); 

Square::Square(QWidget *parent = 0, const char *name = 0, WFlags fl) 
     : QWidget(parent, name, f) 
{ 
     if (!name) 
       setName("Game"); 
     reset(); 
     underMouse=false; 
} 

Mais je vois l'erreur: 'wFlags' n'a pas été déclaré

Maintenant, je refait mon code:

class Square : public QWidget 
{ 
    Q_OBJECT 

    public: 
     Square(QWidget *parent = 0); 
}; 

et sur la place. cpp:

Square::Square(QWidget *parent) 
     : QWidget(parent) 
{ 
} 

Mais je vois l'erreur:

  • erreur: référence non défini à `vtable pour la place »

  • erreur: collect2: ld retourné 1 état de sortie Qu'est-ce qui ne va pas? Comment puis-je déclarer constructeur de la classe basée dans QWidget?

Merci.

+0

Il s'agit probablement d'une faute de frappe, mais le nom de votre paramètre est 'fl' et le nom que vous transmettez au constructeur QWidget est' f'. –

+2

Réexécutez qmake et voyez si l'erreur vtable disparaît. –

+1

Voir http://stackoverflow.com/questions/2555816/qt-object-linker-problem-undefined-reverence-to-vtable –

Répondre