标题:
在 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