QT之鼠标事件的全局捕获

Qt的事件模型一个强大的功能是一个QObject对象能够监视发送其他QObject对象的事件,在事件到达之前对其进行处理。
在这里插入图片描述

上示的图片黑色键盘是一个独立的Widget的子类CKeyboardForm,白色的背景部分是一个独立的主窗口。现在要实现在白色背景上任意点击某一位置即可实现虚拟键盘的收起,很显然这里就要通过CKeyboardForm来截取全局的鼠标(触摸屏)点击事件,并在代码的监视处实现以上的功能,这就是事件过滤的方法。实现一个事件的过滤包括两个步骤
1.在目标对象上调用installEventFilter(),注册监视对象。
2.在监视对象的EventFilter()函数中处理目标对象的事件。
注册监视对象的位置是在CKeyboardForm的构造函数当中:CKeyboardForm::CKeyboardForm(QWidget parent)
: QWidget(parent)
{
m_lstCharacterBtn.clear();
m_eCurrentMode = InputMode::en;
m_bUpperMode = false;
m_iSymbolPage = 0;
QDesktopWidget
desktopWidget = QApplication::desktop();

//global capture
qApp->installEventFilter(this);
}

事件过滤器注册之后,发送到qApp的事件首先到达CKeyboardForm::eventFilter()函数,然后在到达最终的目的地。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值