2015-01-17 34 views
2

使用Qt。從整個系統中的每個鍵捕捉事件。如何捕捉鼠標和鍵盤操作

我已經知道贏API可以做到這一點,但如何編碼qt。我的意思是沒有掛鉤,它可以在多個系統中運行。

可以這樣做嗎?可能不是?

+0

您可以使用事件過濾器來捕獲鍵盤或鼠標事件,但小部件或對話框應該有焦點。它足夠嗎?或者你想要全球快捷鍵? – Nejat

+0

@Nejat是的。全球性的。 – Vonfry

回答

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時遇到很多困難。*。但是您可以看到源代碼的特定部分,並只使用應用程序中的相關部分。

+0

謝謝。讓我試試 – Vonfry