qt捕获按键之无响应

qt编程之捕获按键无响应:

按键无响应一般是没有获取到焦点,因此下面首先介绍一个属性,QWidget以及界面中的每个控件都有focusPolicy属性,用于更改获取焦点的方式,具体如下:

Qt::TabFocus      //通过Tab键获得焦点

Qt::ClickFocus     //通过单击获得焦点

Qt::StrongFocus  //通过以上两种方式(即Tab键或单击)均可获得焦点

Qt::NoFocus        //不能通过以上两种方式获得焦点(如不更改默认为此属性),但可以通过setFocus获取焦点,下面将详细介绍


下面介绍实际开发中遇到的特殊情况:

1问题描述:

        设备使用普通LCD显示屏,使用物理按键,但是不能通过触摸(可通过触摸屏幕代替单击)或者按下Tab键获得焦点,从而不能进入KeyPressEvent函数捕获按键。

1解决方案:

        增加showEvent函数放在KeyPressEvent函数之前,通过setFocus()语句可以在捕获按键之前获得焦点,这样运行出来的界面便无需操作直接可以捕获按键作出相应。


2问题描述:

        在问题1的基础上解决问题之后,笔者在主界面通过按键调用显示子界面后,子界面又遇到了问题1,即使运行了setFocus也不能获得焦点。

2解决方案:

        在主界面跳转之前,即在show子界面之前,先加一句setFocus,使焦点转到子界面即可解决。


版权声明:本文为baidu_41667407原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。