QT for Android 物理按键监听

QT for Android 物理按键监听,第1张

我们现在就一步步来看看怎么处理

1.首先实现监听Menu键

通过学习QT的Event机制我们可以知道,该如何去实现监听Menu键。在QT的event系统中,当有event产生时会被QT系统扔到消息队列中等待处理。而我们的应用程序就可以通过event()函数来进行获取,而且我们可以对event进行过滤,决定我们把什么event进行抛弃。

在程序的MianWindow中重写父类的 void keyPressEvent(QKeyEevnt * event) 函数,在此函数可以获取到Android的各种按键监听。

2.实现监听示教器上的其他物理按键

只要我们把问题解决了,自然就能监听到其他的物理按键了。

判断: QT的源码中对未知的key code进行了异常抛出

1、电脑自身的防火墙问题,关闭防火墙,建立最简单的demo,不成功。

2、程序有问题,运行QT自带的demo也不成功,感觉不科学。代理可能出问题。发现好像设置了IE代理,解决方案加入QNetworkProxyFactorysetUseSystemConfigurationfalse。问题完美解决。

signal由具体对象发出,然后会马上交给由connect函数连接的slot进行处理;而对于事件,Qt使用一个事件队列对所有发出的事件进行维护,当新的事件产生时,会被追加到事件队列的尾部,前一个事件完成后,取出后面的事件进行处理。但是,必要的时候,Qt的事件也是可以不进入事件队列,而是直接处理的。并且,事件还可以使用“事件过滤器”进行过滤。总的来说,如果我们使用组件,我们关心的是信号槽;如果我们自定义组件,我们关心的是事件。因为我们可以通过事件来改变组件的默认 *** 作。比如,如果我们要自定义一个QPushButton,那么我们就需要重写它的鼠标点击事件和键盘处理事件,并且在恰当的时候发出clicked()信号。

还记得我们在main函数里面创建了一个QApplication对象,然后调用了它的exec()函数吗?其实,这个函数就是开始Qt的事件循环。在执行exec()函数之后,程序将进入事件循环来监听应用程序的事件。当事件发生时,Qt将创建一个事件对象。Qt的所有事件都继承于 QEvent类。在事件对象创建完毕后,Qt将这个事件对象传递给QObject的event()函数。event()函数并不直接处理事件,而是按照事件对象的类型分派给特定的事件处理函数(event handler)。

在所有组件的父类QWidget中,定义了很多事件处理函数,如keyPressEvent()、

keyReleaseEvent()、mouseDoubleClickEvent()、mouseMoveEvent ()、mousePressEvent()、mouseReleaseEvent()等。这些函数都是protected virtual的,也就是说,我们应该在子类中重定义这些函数。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11519596.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存