我知道通过grabKeyboard(),如果我的小部件没有获得焦点,它也能够抓取每个键盘事件,但是如果我只想捕获三个或四个键怎么办?
我尝试使用事件过滤器 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)剩下的?