首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

在 Qt 中处理平台相关的底层事件(3)

在 Qt 中处理平台相关的底层事件(3)

4. QWidget::x11Event() 如何工作        QWidget 是 Qt 所有用户界面对象的基类。        它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己。      
        QWidget 定义了针对 XWindow 平台的虚函数:      
清单 12.
1
bool QWidget::x11Event ( XEvent * )




        创建 QWidget 或者其已有派生类的子类,并且重新实现函数 x11Event(),那么所有发送到该 Widget 的 XEvent 首先被函数 x11Event() 截获。        如果希望在函数 x11Event() 中针对某事件进行响应,那么在响应结束后返回 TRUE。        如果函数返回 FALSE,那么该事件会被包装成 Qt 事件,发送给 Widget。      
        QWidget::x11Event(XEvent *) 和 QApplication::x11EventFilter ( XEvent * ) 的区别在于:前者在 XEvent 发送到特定 Qt Widget 之前,被该 Widget 截获;后者在 XEvent 发送到整个程序的主事件循环之前,被 QApplication 截获。      
5. Qt 中其它与平台相关的 APIs        在每个平台上,Qt 都为 QWidget 提供了一个 winId() 函数,返回该 Qt Widget 的 window ID;QWidget 还提供了一个静态函数 find(),该函数可以返回一个特定 window ID 所对应的 Qt Widget。        我们可以将获得的 window ID 传递给 Native API 来执行平台特定的操作。              
        此外,针对 XWindow,Qt 提供了类 X11Info ,用以获取 XWindow 平台的信息。        例如,通过调用静态成员函数 X11Info::display() 可以获取 Qt 程序与 Xserver 建立的连接句柄。
返回列表