QObject :: connect失败并继承(没有这样的插槽,但定义了Q_OBJECT宏)

时间:2015-04-21 08:02:00

标签: c++ qt

通过查看一些伪代码可以最好地描述我的问题:

接头

class A: public QWidget
{
  Q_OBJECT

  public:
    void setupUserInterface(...);
    void funcA(...);
    void funcB(...);

  // etc..
}

class B: public A {
  Q_OBJECT

  // etc..
}

实施

void A::setupUserinterface(...) // uiel1, uiel2 as input
{
  connect(uiel1, SIGNAL(pressed()), this, SLOT(funcA()));
  connect(uiel2, SIGNAL(pressed()), this, SLOT(funcB()));
}

void A::funcA(...) { ... }
void A::funcB(...) { ... }

当我尝试构建并运行时,出现以下错误:

QObject::connect: No such slot B::funcA in /.../A.cpp
QObject::connect: No such slot B::funcB in /.../A.cpp

这意味着由于某种原因,它正在寻找A.cpp中的B成员。

我该如何解决这个问题?提前谢谢。

更新1: 使功能funcAfuncB virtual无效。

1 个答案:

答案 0 :(得分:1)

您的funcAfuncB实际上不是广告位。这是正确的方法:

class A: public QWidget
{
  Q_OBJECT

  public://just public methods
    void setupUserInterface(...);

  public slots://slots declarations section
    void funcA(...);
    void funcB(...);
}