为什么Qt在基类中寻找我的插槽而不是派生的?

时间:2009-09-07 14:33:05

标签: c++ qt signals-slots

我的班级X继承自Qt的班级Base。我在我的类void mySlot()中声明并定义了X槽,并且我在X的构造函数中将一些信号连接到此槽。但是,在运行我的程序时,我收到一条错误消息,指出类void mySlot()中没有Base这样的插槽。

为什么Meta Object Compiler(moc)生成的代码在基类中查找我的插槽而不是在我的(派生)类中?

2 个答案:

答案 0 :(得分:47)

您是否在派生类上添加了Q_OBJECT宏?

答案 1 :(得分:8)

来自#qt irc channel

  1. 确保Q_OBJECT宏存在于所有QObject派生类的定义中。
  2. 确保仅在头文件中声明QObject派生类。
  3. 确保所有头文件都列在HEADERS =列表中的.pro文件中。
  4. 每次将Q_OBJECT添加到其中一个类或修改.pro文件时运行qmake。