Qt笔记-解决键盘事件不能正常响应(其他响应事件通用)
Posted IT1995
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt笔记-解决键盘事件不能正常响应(其他响应事件通用)相关的知识,希望对你有一定的参考价值。
比如在主Widget中写了KeyPressEvent却发现部分按键不能响应,或者全部都不能响应。
造成这个原因是因为,响应事件被其他控件劫持了(Qt中有些控件自带劫持,响应某些按键)。
解决方法:
找到这个控件,再把信号转发出去就可以了或者忽略此信号,这样父类就可能会获取到。
如下面这个例子:
主界面的是QWidget,里面放了一个QGraphicsView。
当我重写QWidget的KeyPress事件后,发现小键盘 上下左右,不能拿到,发现是QGaphicsView劫持了。
因为QGraphicView的父类是QWidget,所以这么做就能转发出去了。
void ChessBoardView::keyPressEvent(QKeyEvent *keyEvent)
parent()->event((QEvent *)keyEvent);
其他的也是一样的。
或者将Event设置为ignore()
如下代码:
void ChessBoardView::keyPressEvent(QKeyEvent *keyEvent)
// parent()->event((QEvent *)keyEvent);
keyEvent->accept();
以上是关于Qt笔记-解决键盘事件不能正常响应(其他响应事件通用)的主要内容,如果未能解决你的问题,请参考以下文章