2012-02-07 2 views

답변

1

슬롯을 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(); } 
}; 

등급 :
다음은 예입니다.

+0

내가 원하는 효과가 분명 있습니다. 그러나 이것을 달성하기위한보다 직접적인 방법이 있습니까? –

+0

나는 그렇게 생각하지 않는다. 'A'에 슬롯이 있거나 슬롯이 없습니다. 그렇지 않다면, B를 통해/delegate를 통해 호출해야합니다. 이를 위해'B'는 슬롯이 필요합니다. 'slots' 섹션에서'using'-directive를 사용할 수 없으므로 어떻게 B에서 멤버 함수를 우회 할 수 있는지 보지 못합니다 ('moc' 출력을 수정하는 것의 짧음). – Mat