Advertisement

全局捕捉鼠标事件

阅读量:

Qt的事件模型具备一项显著优势,即一个QObject对象可以对其他QObject对象所发出的事件进行监控,并在这些事件抵达目标对象之前完成相应的处理操作。

在这里插入图片描述

上述图示中,黑色键盘为一个独立的Widget子类CKeyboardForm,白色背景区域则代表主窗口。当前需求是在白色背景上任意点击某一位置时实现虚拟键盘的收起操作。显然,此功能需要通过CKeyboardForm来捕获全局的鼠标(触摸屏)点击事件,并在代码中相应的位置实现该功能,这即为事件过滤机制。实现事件过滤通常包括两个步骤:

  1. 在目标对象上调用installEventFilter()函数,注册监视对象。
  2. 在监视对象的EventFilter()函数中处理目标对象所接收到的事件。

监视对象的注册工作位于CKeyboardForm的构造函数内部:CKeyboardForm::CKeyboardForm(QWidget *parent)
: QWidget(parent)
{
m_lstCharacterBtn.clear();
m_eCurrentMode = InputMode

全部评论 (0)

还没有任何评论哟~