事件过滤器
每个派生自QObject 的对象都可以 调用该函数
QObject::installEventFilter(QObject *filterObj) 去过滤自己所能处理的事件
参数 filterObj
该参数为实现 eventFilter(QObject *obj, QEvent *event) 过滤函数的 类对象
例如过滤器类
class KeyPressEater : public QObject
{
Q_OBJECT
protected:
bool eventFilter(QObject *obj, QEvent *event);
};
bool KeyPressEater::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::KeyPress) {
QKeyEvent *keyEvent = static_cast
qDebug("Ate key press %d", keyEvent->key());
// true 相当于 accept() false 相当于 ignore()
return true;
} else {
// standard event processing
return QObject::eventFilter(obj, event);
}
}
安装过滤器
keyPressEater = new KeyPressEater();
pushButton = new QPushButton(父窗口);
listView = new QListView(父窗口);
pushButton->installEventFilter(keyPressEater);
listView->installEventFilter(keyPressEater);