首页 文章

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

提问于
浏览
21

我的 class X 继承自Qt的 class Base . 我在我的类 X 和我'm connecting some signal to this slot in X'的构造函数中声明并定义了 void mySlot() 槽 . 但是,在运行我的程序时,我收到一条错误消息,指出在类 Base 中没有 void mySlot() 这样的插槽 .

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

2 回答

  • 45

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

  • 7

    来自#qt irc Channels

    • 确保Q_OBJECT宏存在于所有QObject派生类的定义中 .

    • 确保仅在头文件中声明QObject派生类 .

    • 确保所有头文件都列在HEADERS =列表中的.pro文件中 .

    • 每次将Q_OBJECT添加到其中一个类或修改.pro文件时运行qmake .

相关问题