使用Qt。从整个系统中的每个键中捕获事件。
我知道win API可以做到这一点,但qt如何编码。我的意思是在没有钩子的情况下做它,它可以在多个系统中运行。
能做到吗?可能不是吗?
答案 0 :(得分:3)
Qt中没有实现全局快捷方式。但作为替代方案,您可以使用Qxt。 Qxt是Qt的扩展库,提供了一套跨平台的实用程序类,用于添加Qt中不易获得的功能。它具有全局快捷键(热键),即使应用程序被最小化或隐藏,也可以检测按键。
编译Qxt后,通过将这些应用程序添加到.pro:
链接您的应用程序CONFIG += qxt
QXT = core gui
并加入QxtGlobalShortcut
:
#include <QxtGlobalShortcut>
使用示例:
QxtGlobalShortcut* shortcut = new QxtGlobalShortcut(window);
connect(shortcut, SIGNAL(activated()), window, SLOT(toggleVisibility()));
shortcut->setShortcut(QKeySequence("Ctrl+Shift+F"));
现在,当您按下该特定键序列时,即使您的应用程序被最小化或隐藏,也会调用该插槽。
不幸的是这个项目不再维护了,用Qt 5编译它可能会遇到很多困难。*。但是您可以看到源代码的特定部分,并仅使用应用程序中的相关部分。