16

我正在使用 Qt 在 C++ 中创建一个跨平台实用程序,为此我需要有快捷键(或热键,不太确定区别)。本质上,应用程序将运行并且仅在系统托盘中作为图标可见,并且在您按下某些快捷键(例如,Ctrl-Shift-f4 或其他东西)时执行某些操作。

我的印象是,除非应用程序处于焦点位置,否则 Qt 不提供处理快捷键的方法,在我的情况下不会。所以,这已经结束了(如果这一个可行的选择,请提示我)。

我找到了很多示例/文档来解释如何使用 Xlib/Xcb for linux、win32 api for windows 和 carbon for osx 来做到这一点,但我很难找到一种适用于Qt 应用程序的范围。

什么是完成我需要的方法?

4

1 回答 1

2

我正在挖掘这个旧的未回答的问题,因为使用 QML,我遇到了同样的问题。Shortcut QML 类型允许您指定上下文属性,但您仍然需要一个聚焦的应用程序或窗口。

但是,我找到了一个解决此问题的库:QHotkey。在 Github 上将自己描述为:

桌面 Qt 应用程序的全局快捷方式/热键。

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

QHockey 可通过qpm以包形式提供,并可直接从 C++ 使用。

于 2020-02-26T12:36:50.877 回答