【问题标题】:C++/Qt Global Hotkeys [duplicate]C ++ / Qt全局热键[重复]
【发布时间】:2016-06-04 12:29:28
【问题描述】:

我正在开发一个应用程序,我需要在后台运行它并在按下某个按钮组合时运行一个函数。我有点理解这需要特定于平台的 API 调用(WIN32、X11 等),但我真的不知道如何开始。另外,有没有多平台的方法来实现这一点?我真的需要它才能在 Windows、Linux 和 OSX 上工作。

【问题讨论】:

  • 这就是你想要的吗? how-to-detect-global-key-sequence-press-in-qt?也许this 也值得一看。
  • @holzkohlengrill 是的。这似乎是我正在寻找的。这几天我一直在努力寻找这样的东西。但是,我找不到获取该库的方法。它只是将我重定向到 bitbucket.org
  • @holzkohlengrill 我也刚刚注意到不再维护 Qxt。我将尝试使用您发布的第二个链接(该库最近一次更新是 21 天前,所以看起来很有希望)。

标签: c++ qt hotkeys


【解决方案1】:

总结一下:

  1. The Qt Event System 可能是一个选项(在系统/桌面管理员级别提供一些帮助)
  2. Qxt Library(不再维护)
  3. 或者这个项目UGlobalHotkey

。 2. 似乎是迄今为止最好的选择。虽然它不再维护,但它目前适用于 Qt5。

【讨论】:

  • Qt 的事件系统(本身)不会解决问题,因为它只处理操作系统首先传递给它的事件......而操作系统不会(默认情况下) ) 将击键传递给其窗口当前没有焦点的应用程序。
  • 我可以只包含Qxt或UGlobalHotkey的头文件吗?两者都展示了如何编译它,但没有展示如何包含它。另外,谢谢您的建议
  • 看看他们的文档。只需将库添加到您的项目(qmake 文件)并使用他们的库。我只是随便取了一个example:包括,例子,……都在这里。
【解决方案2】:

http://amin-ahmadi.com/2015/11/14/how-to-use-system-wide-hotkeys-in-your-qt-application/ 展示了如何在 Qt 中使用 Windows API 的RegisterHotKey

您需要热键的密钥代码。

【讨论】:

  • 它工作正常,但菜单栏和其他东西将不再工作。 nativeEvent 将获取所有事件,而 Qt 不会接收它们。
【解决方案3】:

看看https://github.com/kwhat/libuiohook

它是一个可以轻松与 Qt 集成的 c 库。 允许全局键盘和鼠标事件侦听器。

https://github.com/Skycoder42/QHotkey

这是一个基于 Qt 的库,似乎得到了维护。

【讨论】:

    猜你喜欢
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    相关资源
    最近更新 更多