4
我知道,使用grabKeyboard()我的Widget能夠抓住每個鍵盤事件,如果它沒有集中,但如果我想捕獲只有三個或四個鍵?Qt Widget - 如何捕捉只有幾個鍵盤按鍵
我試圖與事件過濾器 http://doc.trolltech.com/3.3/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)?
你寫的第二種方式。我做到了!但不知何故,「忽略」不是將密鑰轉發給其他小部件,而grabKeyboard()保持「吃」所有事件,也忽略了這些事件。 – 2012-07-23 20:08:20
我用你的幫助解決了問題,現在我「grabKeyboard()」只是當過濾器告訴我openGL小部件具有焦點時(即用戶點擊了它),謝謝! – 2012-07-23 20:20:15