在测试代码中, 在 ./src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp 中看到一个:
class EventSpy : public QObject, public QList<QEvent::Type>
{
Q_OBJECT
public:
EventSpy(QObject* objectToSpy)
{
objectToSpy->installEventFilter(this);
}
virtual bool eventFilter(QObject* receiver, QEvent* event)
{
append(event->type());
return false;
}
};
这个类的作用是记录所有被监听对象发出过的所有事件。
要是我来写的话,在没看到这个例子前,肯定会用‘聚合’的方式来实现---也就是声明 class EventSpy : public QObject 并且在类中定义一个 QList<QEvent::Type>成员!
这里,用了多重继承,真是恰到好处!
本文介绍了一种使用多重继承实现事件监听的技术方案。通过一个具体的示例代码,展示了如何利用C++中的多重继承特性创建一个能够记录被监听对象所触发的所有事件的类。这种方法相较于传统的聚合方式更为简洁有效。
1677

被折叠的 条评论
为什么被折叠?



