删除文章

确定要删除这篇文章吗?

取消
确定

QWidget QLabel没有响应keyEvent键盘事件

     阅读(73)  2020-06-23 06:42:59

在Qt中我们经常通过重写下面两种虚函数来实现按键事件

virtual void keyPressEvent(QKeyEvent *event);
bool eventFilter(QObject* watched, QEvent* event);

但是有时候会遇到无法触发的情况(特别是QWidget,QLabel),这个时候我们会考虑是不是被父窗口给截获了没有传递给子窗口。

如果依旧没有解决问题,那可能是这个widget没有焦点的缘故,通常可以通过鼠标点击和tab键可以获取焦点,但是像QWidget、QLabel即使你鼠标点上去了它也不会有焦点的,所以它触发不了键盘事件,你应该给它设置一个焦点获取的策略,而不应该是Qt::NoFocus,如下代码接收tab和click焦点。

setFocusPolicy(Qt::StrongFocus);

只有获取了焦点才能响应按键事件

文章评论

Keep it simple,stupid
文章数
334
今日访问
854
今日IP数
369
最近评论

liangzi: 不错 谢谢分享
tujiaw: registerThreadInactive:如果当前没有激活的线程,就去激活线程,让等待的线程去执行任务。
hgzzx: 佩服佩服。 请教:registerThreadInactive的作用是什么?
xuehaoyun: 很不错,来围观一下
tujiaw: 抱歉csdn code服务关闭了,这个代码我也找不到了
于淞: 你好,这个文章的源码能分享一下吗,songsong9181@163.com,谢谢了 上面的写错了
回到顶部