在测试代码中, 在 ./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>成员!
这里,用了多重继承,真是恰到好处!