pinkyuanxue的个人主页

一块来学习!!!

http://www.qtcn.org/bbs/u/126669  [收藏] [复制]

pinkyuanxue

奋斗.....

  • 23

    关注

  • 26

    粉丝

  • 39

    访客

  • 等级:新手上路
  • 总积分:9
  • 女,1990-01-28

最后登录:2013-07-11

更多资料

日志

QWSKeyEvent的学习

2013-04-16 15:27
基于嵌入式Qt的事件响应设计
在前述的客户/服务器系统结构中,每个键的按下、释放都以QWSKeyEvent事件发出。一个QWSKeyEvent事件通常包括以下各域:
  Unicode:Unicode值。
  Keycode:Qt键码值,定义在qnamespace.h头文件中。
  Modifier:位域, 包括Qt::ShiftButton,Qt::ControlButton和Qt::AltButton。
  Is press:键按下时为真,释放时为假。
  Is auto repeat:键处于自动重复状态时为真。
嵌入式Qt处理键事件的过程为:键盘驱动程序负责从设备中读取数据,并将键事件发送到服务器中。当服务器从键盘驱动程序接收到一个键事件时,它首先要经过一个事件过滤器,然后再将其发送至每个客户进程,最后由客户进程负责处理键事件,并将其发送到适当的窗口。具体流程如图3所示。
这里,键事件未必都来自键盘设备,包括触摸屏,触笔都可以产生键事件。服务器在任何时候都可以调用函数QWSServer::sendKeyEvent()产生键事件。根据这个特点,再结合事件过滤器的特性,便可构造出所需的输入服务器平台。

在Qt中,一个事件通过调用QObject::event()被发送到继承自QObject的对象。事件发送就是一个事件已经产生,由QEvent正好去表达,且QObject需要去回应。多数事件来自窗口系统类QWidget,如QMouseEvent,QkeyEvent事件。某些事件来自其他源头,如QTimerEvent,而某些来自应用程序,Qt会一视同仁的处理。

事件过滤器在目标对象处理之前去处理事件。过滤器通过调用QObject::eventFilter()实现,它可以接受或丢弃过滤,也可容许或拒绝进一步去处理事件。如果所有的事件过滤器允许进一步的处理事件,事件自己就被送达目标对象。本文在服务器进程中安排事件过滤器,接收键事件,经过处理后,将结果发送到客户进程。在客户进程中,处理键事件,并发送到适当的窗口中。



分类:Qt 学习笔记|回复:0|浏览:1308|全站可见|转载
 

下一篇: Qt4库裁剪

上一篇: Linux /dev/fbo/的入门学习

Powered by phpwind v8.7 Certificate Copyright Time now is:05-14 23:51
©2005-2016 QTCN开发网 版权所有 Gzip disabled