2

私は今Qtを使用しています。

私は C++ クラスAを作成しましたが、その中にいくつかのパブリック関数があります。そして今、私はQObjectA の両方から複数の継承を持つQt クラスBを書いています。

そして、 A の1 つのパブリック関数をBパブリック スロットに変更したいと考えています。

それは可能ですか?

4

1 に答える 1

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 を「認識する」必要はまったくありません。

于 2012-02-07T07:53:07.650 に答える