21

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

为什么元对象编译器 (moc) 生成的代码在基类中而不是在我的(派生)类中寻找我的插槽?

4

2 回答 2

47

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

于 2009-09-07T14:35:52.370 回答
9

来自#qt irc 频道

  1. 确保 Q_OBJECT 宏存在于所有 QObject 派生类的定义中。
  2. 确保仅在头文件中声明 QObject 派生类。
  3. 确保所有头文件都列在 .pro 文件的 HEADERS= 列表中。
  4. 每次将 Q_OBJECT 添加到类之一或修改 .pro 文件时运行 qmake。
于 2009-09-11T15:07:37.907 回答