![c82bc6544c8df7983a977b35eb49d497.png](https://img-blog.csdnimg.cn/img_convert/c82bc6544c8df7983a977b35eb49d497.png)
前言
之间做待办列表的时候提过全局热键的功能,当时说后面会单独讲解跨平台设置全局热键的方法,今天就来兑现当时的承诺。话不多说,先来看一下实现效果:
![039e4da6537f5d87d1ff7f7d7d0209c8.gif](https://img-blog.csdnimg.cn/img_convert/039e4da6537f5d87d1ff7f7d7d0209c8.gif)
QxtGlobalShortcut和QHotkey介绍
因为要想实现全局热键功能,无非要对按键事件进行过滤并处理,但是不同平台过滤和处理的方法又不同,所以对系统底层事件了解不是很清楚的话,自己实现起来就很有难度。而且很多人都觉得我就只是想添加一个全局热键而已,没必要那么大费周章吧,那么此时我们就要寻求可用的第三方库了。
github上有很多实现,但是支持跨平台且方便好用、稳定可靠的我只找到了两个,一个就是QxtGlobalShortcut(Qt5版本是QxtGlobalShortcut5),用这个库的人相对也比较多,我今天也主要介绍这种方法,另一个就是QHotkey,该库用的人较少,但是功能也很不错,具有以下特性:
- 在Windows,Mac和X11上均可使用
- 易于使用,可QKeySequence用于轻松快捷输入
- 支持几乎所有常用键(取决于操作系统和键盘布局)
- 允许直接输入键/修饰键组合
- 支持同一快捷方式的多个QHotkey实例(具有优化)
- 线程安全-可以在所有线程上使用(请参阅线程安全部分)
- 如果需要,允许使用本机键码和修饰符
QxtGlobalShortcut项目地址:https://github.com/ddqd/qxtglobalshortcut5
QHotkey项目地址:https://github.com/xtuer/QHotkey