如何让子部件处理QKeyEvent?
我使用 QTabWidget 作为 QMainWindow 中的centralWidget,但是, keyPressEvent() 不会在 QTabWidget 的任何子小部件中触发,如果我在 QMainWindow::keyPressEvent() 中尝试以下操作,它将崩溃。
void Window::keyPressEvent(QKeyEvent *e) {
QApplication::sendEvent( centralWidget->currentWidget() , e );
}
Window 是 QMainWindow 的一个实例。
让子部件而不是父部件处理这些事件的正确方法是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果子窗口小部件被设计为接收和处理按键事件,那么如果它具有键盘焦点,它将接收这些事件。如果它是自定义或子类小部件,那么除了按照 keyPressEvent() 之外,您还需要执行一些其他操作.com/latest/qwidget.html#events" rel="nofollow">此处。
If the child widget is designed to receive and handle key press events, then it will receive them if it has keyboard focus. If it is a custom or subclassed widget then you will need to do a few other things besides just overriding the child widget's
keyPressEvent()
as described here.