通过查看一些伪代码可以最好地描述我的问题:
接头
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:
使功能funcA
和funcB
virtual
无效。
答案 0 :(得分:1)
您的funcA
和funcB
实际上不是广告位。这是正确的方法:
class A: public QWidget
{
Q_OBJECT
public://just public methods
void setupUserInterface(...);
public slots://slots declarations section
void funcA(...);
void funcB(...);
}