Board logo

标题: 在 Qt 中处理平台相关的底层事件(3) [打印本页]

作者: look_w    时间: 2018-5-19 15:47     标题: 在 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 建立的连接句柄。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0