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笔记-解决键盘事件不能正常响应(其他响应事件通用)的主要内容,如果未能解决你的问题,请参考以下文章

qt keyPressEvent函数方向键没有响应键盘事件的解决方法

VB.NET如何使控件不能响应KeyDown事件

qt界面不动,但是响应事件

QT 捕获事件(全局拦截)

Qt键盘事件--组合键响应方法

PyQt5-Qt Designer鼠标+键盘事件