将基类信号连接到继承的类槽

问题描述 投票:0回答:1

我有一个问题 - 如何将基类信号连接到继承的类槽。我有这样的代码

class A: public QObject
{
    Q_OBJECT
public:
    A(){}
    void EmitSignal()
    {
    emit(Asignal());
    }
signals:
    void Asignal(); 
};

class B: public A
{
public:
    B();
public slots:
    void Bslot()
        {
        //dosmth
        }
};

B::B()
{
    connect(this, SIGNAL(Asignal()), this, SLOT(Bslot()));
}

int main(int argc, char *argv[]) 
{
    B Bobject;
    B.EmitSignal();
}

当我打电话给B.EmitSignal()时,我想要调用Bslot(),但是我在输出窗口中收到了一条消息

QObject :: connect:没有这样的插槽A :: Bslot()。

我怎样才能实现Bslot()执行?

base-class inherited
1个回答
0
投票

找到了解决方案。我忘记了继承类中的Q_OBJECT宏

© www.soinside.com 2019 - 2024. All rights reserved.