我可以将基类中的公共函数修改为Qt中派生类中的公共槽吗?

时间:2012-02-07 07:37:23

标签: qt slot

我现在正在使用Qt。

我写了一个C ++类 A ,其中有一些公共函数。现在,我正在编写一个Qt类 B ,它具有 QObject A 的多个继承权。

我想将 A 中的公共功能更改为 B 中的公共广告位

可以吗?

1 个答案:

答案 0 :(得分:1)

您可以通过在B中创建一个广告位并在其中委派给A的功能来实现这一目标。
这是一个例子:

#include <QtCore>

class A {
    public:
        A() {}
        void foo() { qDebug() << "In A::foo()"; }
};

class B: public QObject, public A {
    Q_OBJECT

    public:
        B(QObject *parent=0): QObject(parent), A() {
            connect(this, SIGNAL(fire()), this, SLOT(foo()));
        }
    public slots:
        void foo() {
            qDebug() << "In slot B::foo()";
            A::foo();
        }
    signals:
        void fire();
    public:
        void test() { emit fire(); }
};

班级A根本不需要“了解”Qt。