如何让子widget进程QKeyEvent?

时间:2011-10-02 05:57:03

标签: events qt4 widget keypress

我在QMainWindow中使用QTabWidget作为centralWidget,但是,keyPressEvent()不会在QTabWidget的任何子窗口小部件中触发,如果我在QMainWindow :: keyPressEvent()中尝试以下操作,它将崩溃。 / p>

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

Window是QMainWindow的一个实例。

让孩子处理这些事件而不是父窗口小部件的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

如果子窗口小部件旨在接收和处理按键事件,那么如果它具有键盘焦点,它将接收它们。如果它是一个自定义或子类窗口小部件,那么除了像here所述覆盖子窗口小部件keyPressEvent()之外,您还需要执行其他一些操作。