<img src="README.assets/Qt-5.12.12-green.png">[![个人主页-CSDN-orange](README.assets/%E4%B8%AA%E4%BA%BA%E4%B8%BB%E9%A1%B5-CSDN-orange.png)](https://blog.csdn.net/qq_43627907?type=blog)[![国内站点-gitee-orange](README.assets/%E5%9B%BD%E5%86%85%E7%AB%99%E7%82%B9-gitee-orange.png)](https://gitee.com/mahuifa/QMDemo)[![国外站点-github-brightgreen](README.assets/%E5%9B%BD%E5%A4%96%E7%AB%99%E7%82%B9-github-brightgreen.png)](https://github.com/mahuifa/QMDemo)
# 这是一个使用Qt封装的全局鼠标、键盘事件监听器的库
| 功能 | 系统 | 是否实现 | 实现方式 |
| ---- | ---- | ---- | ---- |
| | | | |
| 全局鼠标事件监听器 | Windows | 已实现 | user32鼠标钩子 |
| 全局鼠标事件监听器 | Linux | 已实现 | x11 API |
| 全局键盘事件监听器 | Windows | 已实现 | user32键盘钩子 |
| 全局键盘事件监听器 | Linux | 暂未实现 | x11 xcb API |
* 备注:Linux下全局键盘事件监听器通过使用X11 API已经获取到了全局键盘事件,但是不知道怎么将X11键盘事件映射为QKeyEvent,通过阅读Qt源码,发现Qt使用的是xcb将xkb映射为QKeyEvent,后续有时间在继续研究<mark>(有懂的朋友欢迎补充,或者联系我:1603291350@qq.com)</mark>。
* Linux键盘事件映射QKeyEvent源码位置:`D:\Qt\Qt5.12.5\5.12.5\Src\qtbase\src\plugins\platforms\xcb\qxcbkeyboard.cpp`
## 实现效果
![GlobalMouseKey](README.assets/GlobalMouseKey.gif)
## 使用方式
* 可以看示例程序[Examples](./Examples)
- 新建一个工程,在pro文件中引入模块
```makefile
include($$PWD/GlobalMouseKey/GlobalMouseKey.pri)
INCLUDEPATH += $$PWD/GlobalMouseKey
```
- 在需要使用到全局鼠标、键盘事件的类中添加头文件
```cpp
#include <globalmouseevent.h>
#include "globalkeyevent.h"
```
- 绑定对应的信号
```cpp
connect(GlobalMouseEvent::getInstance(), &GlobalMouseEvent::mouseEvent, this, &Widget::on_mouseEvent);
connect(GlobalMouseEvent::getInstance(), &GlobalMouseEvent::wheelEvent, this, &Widget::on_wheelEvent);
connect(GlobalKeyEvent::getInstance(), &GlobalKeyEvent::keyEvent, this, &Widget::on_keyEvent);
```
- 安装全局鼠标、键盘事件监听器后就可以使用了
```cpp
/**
* @brief 安装全局鼠标事件监听器
*/
void Widget::on_but_mouseI_clicked()
{
bool ret = GlobalMouseEvent::installMouseEvent();
ui->textEdit->append(QString("<<<<<<<<<< 全局鼠标事件监听器安装%1 >>>>>>>>>>").arg(ret ? "成功" : "失败"));
}
/**
* @brief 卸载全局鼠标事件监听器
*/
void Widget::on_but_mouser_clicked()
{
bool ret = GlobalMouseEvent::removeMouseEvent();
ui->textEdit->append(QString("<<<<<<<<<< 全局鼠标事件监听器卸载%1 >>>>>>>>>>").arg(ret ? "成功" : "失败"));
}
/**
* @brief 安装全局键盘事件监听器
*/
void Widget::on_but_keyI_clicked()
{
bool ret = GlobalKeyEvent::installKeyEvent();
ui->textEdit->append(QString("<<<<<<<<<< 全局键盘事件监听器安装%1 >>>>>>>>>>").arg(ret ? "成功" : "失败"));
}
/**
* @brief 卸载全局键盘事件监听器
*/
void Widget::on_but_KeyR_clicked()
{
bool ret = GlobalKeyEvent::removeKeyEvent();
ui->textEdit->append(QString("<<<<<<<<<< 全局键盘事件监听器卸载%1 >>>>>>>>>>").arg(ret ? "成功" : "失败"));
}
```
- 注意:每个信号建议只绑定一次,接收到信号后由于是指针,在使用完成后记得delete
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
这是一个使用Qt封装的全局鼠标、键盘事件监听器的库,方便程序监听系统中所有的鼠标、键盘事件,就算是当前程序隐藏了、失去焦点了也可以。 qt项目,工具源码,适合毕业设计、课程设计作业,所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答! 软件开发设计:PHP、QT、应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备、移动设备等 操作系统:LInux、IOS、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统、智能操作系统等。 云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。
资源推荐
资源详情
资源评论
收起资源包目录
这是一个使用Qt封装的全局鼠标、键盘事件监听器的库,方便程序监听系统中所有的鼠标、键盘事件,就算是当前程序隐藏了、失去焦点了也可以。.zip (20个子文件)
cm
Examples
MouseKeyEvent
widget.ui 2KB
widget.cpp 5KB
main.cpp 165B
MouseKeyEvent.pro 2KB
widget.h 587B
GlobalMouseKey
globalmouseevent.h 1KB
globalmouseevent_win.cpp 5KB
globalkeyevent_win.cpp 27KB
globalkeyevent.h 920B
globalkeyevent_x11.cpp 7KB
GlobalMouseKey.pri 2KB
globalmouseevent_x11.cpp 11KB
LICENSE 11KB
README.assets
Qt-5.12.12-green.png 1KB
GlobalMouseKey.gif 1.95MB
个人主页-CSDN-orange.png 1KB
国内站点-gitee-orange.png 1KB
国外站点-github-brightgreen.png 1KB
.gitignore 614B
README.md 4KB
共 20 条
- 1
资源评论
妄北y
- 粉丝: 1w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功