grabKeyboard()を使用すると、フォーカスされていない場合でもウィジェットがすべてのキーボードイベントを取得できることを知っていますが、3つまたは4つのキーだけをキャプチャしたい場合はどうなりますか?
イベントフィルターを試してみました https://doc.qt.io/qt-5/qobject.html#installEventFilter
しかし、それはうまくいきませんでした(おそらく私がこのようにインストールしたためですか?)
class MyWidget: public QGLWidget
{
...
protected:
bool eventFilter( QObject *o, QEvent *e );
};
bool MyWidget::eventFilter( QObject *o, QEvent *e )
{
if ( e->type() == QEvent::KeyPress ) {
// special processing for key press
QKeyEvent *k = (QKeyEvent *)e;
qDebug( "Ate key press %d", k->key() );
return TRUE; // eat event
} else {
// standard event processing
return FALSE;
}
}
// Installed it in the constructor
MyWidget::MyWidget()
{
this->installEventFilter(this);
}
ウィジェット内のいくつかのキーをインターセプトし、残りのウィジェット(QTextEdits)を残すにはどうすればよいですか?