2012-02-07 66 views

回答

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的“知道”的说法。

+0

这绝对是我想要的效果。但它有更直接的方式来实现这一目标吗? – 2012-02-07 07:58:32

+0

我不这么认为。 “A”有一个插槽或它没有。如果没有,你需要以某种方式通过/ B从'B'调用它。为此,'B'需要一个插槽。你不能在'slots'部分使用'使用'指令,所以我不明白你如何绕过B中的成员函数。(修改'moc'输出之后)。 – Mat 2012-02-07 08:07:26

相关问题