我在QMainWindow中使用QTabWidget作为centralWidget,但是,keyPressEvent()不会在QTabWidget的任何子窗口小部件中触发,如果我在QMainWindow :: keyPressEvent()中尝试以下操作,它将崩溃。 / p>
void Window::keyPressEvent(QKeyEvent *e) {
QApplication::sendEvent( centralWidget->currentWidget() , e );
}
Window是QMainWindow的一个实例。
让孩子处理这些事件而不是父窗口小部件的正确方法是什么?
答案 0 :(得分:2)
如果子窗口小部件旨在接收和处理按键事件,那么如果它具有键盘焦点,它将接收它们。如果它是一个自定义或子类窗口小部件,那么除了像here所述覆盖子窗口小部件keyPressEvent()
之外,您还需要执行其他一些操作。