Могу ли я изменить открытую функцию в базовом классе для открытых слотов в производном классе в Qt?
Я сейчас использую Qt.
Я написал C++ класс A и в нем есть несколько открытых функций. И сейчас я пишу класс Qt B, который имеет несколько наследований от QObject и A.
И я хочу изменить одну публичную функцию в A на публичные слоты в B.
Это возможно?
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.