在kdevelop中,我如果在继承QWdget及其子类时,若加了Q_OBJECT宏,在make时就会出现:
undefined reference to "vtable for MyWidget"(子类名为MyWidget)
如果去掉Q_OBJECT宏,则不会出现这个问题,但是我定义的slot及signal就不会被
发现了,请问一下这是怎么回事啊?千恩万谢!我用的是redhat9自带的kdevelop。
...全文
1779打赏收藏
signal/slot机制出问题,求助
在kdevelop中,我如果在继承QWdget及其子类时,若加了Q_OBJECT宏,在make时就会出现: undefined reference to "vtable for MyWidget"(子类名为MyWidget) 如果去掉Q_OBJECT宏,则不会出现这个问题,但是我定义的slot及signal就不会被 发现了,请问一下这是怎么回事啊?千恩万谢!我用的是redhat9自带的kdevelop。
moc的作用类似C预处理器,而你把它当作了make,当然是不行的。
参考连接里的Automating moc Usage with Makefiles部分:
如果你的类声明在头文件里,那么在Makefile里增加:
1、(注意缩进为tab,不是空格)
moc_%.cpp: %.h
moc $< -o $@
2、You must also remember to add moc_NAME.cpp to your SOURCES (substitute your favorite name) variable and moc_NAME.o or moc_NAME.obj to your OBJECTS variable.