Могу ли я изменить открытую функцию в базовом классе для открытых слотов в производном классе в Qt? - PullRequest
2 голосов
/ 07 февраля 2012

Я сейчас использую Qt.

Я написал класс C ++ A , и в нем есть несколько открытых функций.И сейчас я пишу класс Qt B , который имеет несколько наследований от QObject и A .

И я хочу изменитьодна публичная функция в A до публичных слотах в B .

Возможно ли это?

1 Ответ

1 голос
/ 07 февраля 2012

Вы можете сделать это, просто создав слот в 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 didn 'не нужно вообще «знать» о Qt.

...