views:

316

answers:

2

I have my class X which inherits from Qt's class Base. I declared and defined void mySlot() slot in my class X and I'm connecting some signal to this slot in X's constructor. However, when running my program I get an error message saying there's no such slot as void mySlot() in the class Base.

Why is the code generated by Meta Object Compiler (moc) looking for my slot in the base class and not in my (derived) class?

+6  A: 

Did you add the Q_OBJECT macro on the derived class?

Federico
A: 

From #qt irc channel

  1. Make sure the Q_OBJECT macro is present in the definition of all QObject-derived classes.
  2. Make sure you declare your QObject-derived classes in your header files ONLY.
  3. Make sure all of your header files are listed in your .pro file in the HEADERS= list.
  4. Run qmake every time you add Q_OBJECT to one of your classes or modify your .pro file.
Piotr Dobrogost