今天跟着Qt教程走的时候发现教程里可以触发键盘事件(如keyPressEvent),但是我不可以,于是一番谷歌后找到了这个博客:检测按键输入及解决无法响应方向键问题。
当然你也可以直接看我博客。这个问题似乎是所有QWidget的派生类都有的,那么如何解决它呢?可以在类的构造函数里加一条:
1 | setFocusPolicy(Qt::ClickFocus); |
该函数可以设置focus策略。然后Qt::ClickFocus是点击程序窗口后聚焦焦点。Qt::ClickFocus是枚举类型,相应的还有:Qt::TabFocus,Qt::StrongFocus,Qt::WheelFocus,Qt::NoFocus。功能分别是TabFocus(按照名字以及英文的解释来看应该是使用Tab聚焦焦点,但是我点击了一下程序窗口依然聚焦了。),StrongFocs(同时具有ClickFocus和TabFocus的特性),WheelFocus(相当于是StrongFocus的升级版,鼠标滚轮也会导致聚焦焦点),NoFocus(看名字就知道啥意思了,不聚焦焦点)。
那么本篇完。