前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分享QHotKey全局监听按键事件

分享QHotKey全局监听按键事件

作者头像
Qt君
发布2023-03-17 13:58:50
1.3K0
发布2023-03-17 13:58:50
举报
文章被收录于专栏:跟Qt君学编程跟Qt君学编程

基于Qt实现监听全局快捷方式/热键的操作。

1. 介绍

  QHotKey是一个类,可用于创建热键/全局快捷方式,也就是可在任何地方使用的快捷方式,而与应用程序状态无关。这意味着您的应用程序可以处于活动状态,非活动状态,最小化或根本不可见,并且仍会收到快捷方式。

2. 特性

  • 在Windows,Mac和X11上均可使用。
  • 易于使用,可QKeySequence用于快捷输入。
  • 支持几乎所有常用键(取决于操作系统和键盘布局)。
  • 允许直接输入键/修饰键组合。
  • 支持同一快捷方式的多个QHotkey实例(具有优化)。
  • 线程安全-可以在所有线程上使用(请参阅线程安全部分)。
  • 如果需要,允许使用本机键码和修饰符。

注意:目前不支持Wayland,因为无法在Wayland中注册全局快捷方式。

3. 用法

通常的用法是为特定的热键创建QHotkey实例,注册它们,然后只要按下热键就可以简单地连接到发出的信号。

4. 例子

  这个例子是全局监听ctrl + alt + Q组合键,触发后置顶退出程序操作。

代码语言:javascript
复制
#include <QHotkey>
#include <QApplication>
#include <QDebug>

int main(int argc, char *argv[])
{
 QApplication a(argc, argv);

 auto hotkey = new QHotkey(QKeySequence("ctrl+alt+Q"), true, &a);//The hotkey will be automatically registered
 qDebug() << "Is Registered: " << hotkey->isRegistered();

 QObject::connect(hotkey, &QHotkey::activated, qApp, [&](){
  qDebug() << "Hotkey Activated - the application will quit now";
  qApp->quit();
 });

 return a.exec();
}

注意:您需要使用.pri include才能正常工作。

5. 源码地址

代码语言:javascript
复制
https://www.github.com/Skycoder42/QHotkey
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 介绍
  • 2. 特性
  • 3. 用法
  • 4. 例子
  • 5. 源码地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档