イベントフィルターを使えば、それが簡単にできる。
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(event);
qDebug("EAT ! key code = %d", keyEvent->key());
return true;
}
return QObject::eventFilter(obj, event);
}----
main.....
KeyPressEater* eater = new KeyPressEater();
QApplication::instance()->installEventFilter(eater);
KeyPressEater クラスのeventFilter() の呼び出しは、オブジェクト固有のイベント呼び出しよりも先に呼ばれる。戻り値でtrue を返してしまえば、このイベントタイプの処理は他のオブジェクトによって処理されない。

0 件のコメント:
コメントを投稿