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

Pio*_*ost 21 c++ qt signals-slots

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

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

Fed*_*ico 47

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


Pio*_*ost 8

来自#qt irc频道

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