文章标题 原创 翻译 转载 文章内容 在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); ``` > 只有获取了焦点才能响应按键事件 文章类别 Python Mobile Android Java Shell Life Database Bug Windows IOS Tools Boost Node.js Mac Product Tips C/C++ Golang Javascript React Qt MQ MongoDB Design Web Linux LLM ChatGPT RAG AI 提交