2011-10-02 49 views
0

我在QMainWindow中使用QTabWidget作爲centralWidget,但是,keyPressEvent()不會在QTabWidget的任何子部件中觸發,如果我在該QMainWindow :: keyPressEvent()中嘗試以下操作,它將會崩潰。如何讓子窗口小部件處理QKeyEvent?

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

窗口是QMainWindow的一個實例。

讓孩子處理這些事件而不是父窗口小部件的正確方法是什麼?

回答

2

如果子窗口小部件被設計爲接收和處理按鍵事件,那麼它將接收它們,如果它有鍵盤焦點。如果它是一個自定義或子類的小部件,那麼除了像here所描述的那樣重寫子部件的keyPressEvent()之外,您還需要做其他一些事情。

相關問題