c++ - 跨平台 Qt 应用程序中的全局热键

标签 c++ qt cross-platform keyboard-shortcuts

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

我的印象是,除非应用程序处于焦点,否则 Qt 不提供处理快捷键的方法,而在我的情况下,它不会。所以,就这样了(如果这是一个可行的选择,请告诉我)。

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

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

最佳答案

我正在挖掘这个旧的未回答的问题,因为使用 QML,我遇到了同样的问题。 Shortcut QML 类型允许您指定 context属性,但您仍然需要一个专注的应用程序或窗口。
但是,我找到了一个解决此问题的库:QHotkey .在 Github 上这样描述自己:

A global shortcut/hotkey for Desktop Qt-Applications.

The QHotkey is a class that can be used to create hotkeys/global shortcuts, aka shortcuts that work everywhere, independent of the application state. This means your application can be active, inactive, minimized or not visible at all and still receive the shortcuts.


QHockey 可通过 qpm 打包获得并且可以直接从 C++ 使用。

关于c++ - 跨平台 Qt 应用程序中的全局热键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11813823/

相关文章:

c++ - 确定确切的头文件

c++ - OpenCV imshow 不在 osx 中显示图像

tags - 在 PC 和 Mac 上为图像使用标签或元数据

c++ - 头文件。 ETC

c++ - 每 1 秒调用一个函数(精确地)

c++ - 对类型 'const QVariant' 的引用无法绑定(bind)到类型 'void' 的右值

c++ - 将 C++ 转换为 Objective C

c++ - 如何将 fromString() 与 currentDate() 一起使用

c++ - 跨平台 NPAPI 接口(interface)/集成

python - 换行适用于 Windows 但不适用于 Linux