• 3459阅读
  • 2回复

[提问]不识别子类的槽函数 [复制链接]

上一主题 下一主题
离线strelz
 
只看楼主 倒序阅读 楼主  发表于: 2013-03-04
关键词: signalslot
我写了一段代码,首先是定义一个抽象的父类ParentClass:public  QWidget,这个抽象父类又是继承了QWidget的子类;之后,又定义一个ParentClss的子类,这个子类实现了父类ParentClass的纯虚函数,并且又定义了一些信号和槽函数mySlot(),但是在程序执行的时候,程序虽然可以运行,但是提示,没有找到槽函数ParentClass::mySlot,我是在子类当中定义的这个槽函数,为什么会提示找不到父类中的这个槽函数?另外,父类的.h文件中声明了Q_OBJECT宏,如果在子类中也声明这个宏就会报错。请问,为什么我在子类中定义的宏不能够识别出来?
  1. //ParentClass.h
  2. class ParentClass:public QWidget
  3. {
  4. Q_OBJECT
  5. public :
  6. virtual void fun1()=0;
  7. void fun2();
  8. private:
  9. int a;
  10. }
  11. //ChildClass.h
  12. class ChildClass:public ParentClass
  13. {
  14. public:
  15. ChildClass();
  16. void fun1();
  17. void fun2();
  18. signals:
  19. void mySignal();
  20. public slots:
  21. void mySlot();
  22. }
  23. //mainwindow.h
  24. class MainWindow:public QMainWindow
  25. {
  26. Q_OBJECT
  27. ChildClass childClass;
  28. QPushButton button;
  29. }
  30. //mainwindow.cpp
  31. mainwindow的构造函数中:
  32. ...
  33. connect(&button,SIGNAL(clicked()),&childClass,SLOT(mySlot()));


离线pxiao_xiao

只看该作者 1楼 发表于: 2013-03-04
Q_OBJECT宏位于父类中
离线dbzhang800

只看该作者 2楼 发表于: 2013-03-05
引用楼主strelz于2013-03-04 19:52发表的 不识别子类的槽函数 :
另外,父类的.h文件中声明了Q_OBJECT宏,如果在子类中也声明这个宏就会报错。请问,为什么我在子类中定义的宏不能够识别出来?[code]/
.......

子类中必须有Q_OBJECT
快速回复
限100 字节
 
上一个 下一个