2
我现在在使用Qt。我可以在基类中修改派生类中的公共插槽的公共函数吗?
我写了一个C++类A并且里面有一些公共函数。现在,我正在编写一个Qt类B,它有QObject和A的多个继承。
而且我想在乙改变一个公共功能一个到公用插槽。
有可能吗?
我现在在使用Qt。我可以在基类中修改派生类中的公共插槽的公共函数吗?
我写了一个C++类A并且里面有一些公共函数。现在,我正在编写一个Qt类B,它有QObject和A的多个继承。
而且我想在乙改变一个公共功能一个到公用插槽。
有可能吗?
您可以通过简单地在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的“知道”的说法。
这绝对是我想要的效果。但它有更直接的方式来实现这一目标吗? – 2012-02-07 07:58:32
我不这么认为。 “A”有一个插槽或它没有。如果没有,你需要以某种方式通过/ B从'B'调用它。为此,'B'需要一个插槽。你不能在'slots'部分使用'使用'指令,所以我不明白你如何绕过B中的成员函数。(修改'moc'输出之后)。 – Mat 2012-02-07 08:07:26