2011-10-02 9 views
0

私はQMainWindowでcentralWidgetとしてQTabWidgetを使用していますが、QMainWindow :: keyPressEvent()で次のメソッドを実行すると、keyPressEvent()はQTabWidgetの子ウィジェットでトリガーされません。子ウィジェットがQKeyEventを処理させる方法は?

void Window::keyPressEvent(QKeyEvent *e) { 
    QApplication::sendEvent(centralWidget->currentWidget() , e); 
} 

ウィンドウはQMainWindowのインスタンスです。

親ウィジェットではなく、子がそれらのイベントを処理する正しい方法は何ですか?

答えて

2

子ウィジェットがキープレスイベントを受信して​​処理するように設計されている場合、子ウィジェットはキーボードフォーカスがある場合に受信します。カスタムウィジェットまたはサブクラス化されたウィジェットの場合は、子ウィジェットのkeyPressEvent()をオーバーライドするだけでなく、hereのようないくつかのことを行う必要があります。