2
지금 Qt를 사용하고 있습니다.Qt에서 기본 클래스의 공용 함수를 파생 클래스의 공용 슬롯으로 수정할 수 있습니까?
나는 C++ 클래스 A을 작성했으며 일부 공용 기능이 있습니다. 그리고 이제 Qt 클래스 B을 작성 중입니다. QObject 및 의 다중 상속을 갖고 있습니다.
은 내가 B의공공 슬롯 에을 한 공공 기능을 변경하고 싶습니다.
가능합니까?
지금 Qt를 사용하고 있습니다.Qt에서 기본 클래스의 공용 함수를 파생 클래스의 공용 슬롯으로 수정할 수 있습니까?
나는 C++ 클래스 A을 작성했으며 일부 공용 기능이 있습니다. 그리고 이제 Qt 클래스 B을 작성 중입니다. QObject 및 의 다중 상속을 갖고 있습니다.
은 내가 B의공공 슬롯 에을 한 공공 기능을 변경하고 싶습니다.
가능합니까?
슬롯을 B
에 만들고 A
의 기능을 위임하면됩니다. A
전혀 Qt는의 "인식"할 필요는 없습니다
#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'에 슬롯이 있거나 슬롯이 없습니다. 그렇지 않다면, B를 통해/delegate를 통해 호출해야합니다. 이를 위해'B'는 슬롯이 필요합니다. 'slots' 섹션에서'using'-directive를 사용할 수 없으므로 어떻게 B에서 멤버 함수를 우회 할 수 있는지 보지 못합니다 ('moc' 출력을 수정하는 것의 짧음). – Mat