Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is Qt looking for my slot in the base class instead of derived one?

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?

like image 925
Piotr Dobrogost Avatar asked Sep 07 '09 14:09

Piotr Dobrogost


2 Answers

Did you add the Q_OBJECT macro on the derived class?

like image 70
Federico Avatar answered Nov 10 '22 17:11

Federico


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.
like image 20
Piotr Dobrogost Avatar answered Nov 10 '22 17:11

Piotr Dobrogost