比如在主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();
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq78442761/article/details/121485210
内容来源于网络,如有侵权,请联系作者删除!