问题
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?
回答1:
Did you add the Q_OBJECT macro on the derived class?
回答2:
From #qt irc channel
- Make sure the Q_OBJECT macro is present in the definition of all QObject-derived classes.
- Make sure you declare your QObject-derived classes in your header files ONLY.
- Make sure all of your header files are listed in your .pro file in the HEADERS= list.
- Run qmake every time you add Q_OBJECT to one of your classes or modify your .pro file.
来源:https://stackoverflow.com/questions/1389680/why-is-qt-looking-for-my-slot-in-the-base-class-instead-of-derived-one