精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

詳解 Qt 全局熱鍵 QxtGlobalShortcut 分析與使用舉例

移動開發
本文介紹Qt 全局熱鍵 QxtGlobalShortcut 分析與使用舉例 ,不少人有給程序添加全局熱鍵的需求。網上隨便一搜,就能找到不少介紹windows下如何實現的方式,請看內容。

Qt 全局熱鍵 QxtGlobalShortcut 分析與使用舉例,與你分享,如果你需要全局熱鍵,那么本文將會為你解決。

首先: 使用 RegisterHotKey和 UnregisterHotKey 注冊和反注冊熱鍵

其次: 在事件全局過濾器 winEventFilter 中相應熱鍵,但是涉及其他平臺的,中文資料中提到的似乎不多。

libqxt

其實Qt第三方的庫 libqxt 中已經給出了一個比較好的跨平臺的解決方案,這就是 QxtGlobalShortcut

所以,只要你使用這個第三方庫就可以了。

可是,你會不會想,我僅僅為了使用這個類,而引入這個 libqxt 第三方庫是不是有點大題小做?我能不能將其剝離出來單獨使用?

QxtGlobalShortcut

恩,用google搜索一下,就可以知道,網上很多人都做過這個工作了。你會發現很多人將剝離出的 QxtGlobalShortcut 作為項目的 3rdparty 部分。

那么我們接下來就看看這個 QxtGlobalShortcut :

用法

已經簡單到不能再簡單了,是不?

  1. QxtGlobalShortcut* shortcut = new QxtGlobalShortcut(QKeySequence("Ctrl+Shift+F12"), w); 

connect(shortcut, SIGNAL(activated()), w, SLOT(myslot()));注意:如果你對其內部實現不感興趣,只關心如何使用,那么這個小例子可能就是你需要的全部了 :

http://code.google.com/p/h-qt-exercise/downloads/detail?name=shortcut.zip&can=2&q=

源碼文件

  1. gxtglobal.h  

libqxt 一個全局文件

  1. qxtglobalshortcut.h  

我們最關心的接口文件

  1. qxtglobalshortcut_.h  

私有頭文件

  1. gxtglobalshortcut.cpp  

類的實現(平臺無關部分)

  1. gxtglobalshortcut_win.cpp  

類的實現(win)

  1. gxtglobalshortcut_x11.cpp  

類的實現(x11)

  1. gxtglobalshortcut_mac.cpp  

類的實現(mac)

熱鍵的注冊過程

我們通過構造函數,或者setShortcut 成員設置一個熱鍵時:

首先將這個 QKeySequence 分解成兩部分 Qt::Key 和 Qt::KeyboardModifiers

(即:下面的 key 和 mods)

然后,key 和 mods 分別轉換成平臺相關(native)的碼值,并調用平臺相關的函數進行注冊

最后,將key與mods的native碼值構成的QPair作為QHash的鍵,將該shortcut的指針作為值保存起來。 

  1. bool QxtGlobalShortcutPrivate::setShortcut(const QKeySequence& shortcut)  
  2. {  
  3. ...  
  4.     key = ...  
  5.     mods = ...  
  6.     const quint32 nativeKey = nativeKeycode(key);  
  7.     const quint32 nativeMods = nativeModifiers(mods);  
  8.     const bool res = registerShortcut(nativeKey, nativeMods);  
  9.     shortcuts.insert(qMakePair(nativeKey, nativeMods), &qxt_p()); 

反注冊的過程與此類似。

熱鍵激活

首先給 QAbstractEventDispatcher 安裝事件過濾器

  1. QAbstractEventDispatcher::instance()->setEventFilter(eventFilter);注意,這兒不是給 QApplication 安裝的。Manual中是這樣告訴我們的  
  2. bool QCoreApplication::winEventFilter ( MSG * msg, long * result ) [virtual]  
  3. To handle system wide messages, such as messages from a registered hot key, 
  4. you need to install an event filter on the event dispatcher, 
  5. which is returned from QAbstractEventDispatcher::instance().然后我們在過濾器中分別進行處理,比如windows下   
  6. bool QxtGlobalShortcutPrivate::eventFilter(void* message)  
  7. {  
  8.     MSG* msg = static_cast<MSG*>(message);  
  9.     if (msg->message == WM_HOTKEY){  
  10.         const quint32 keycode = HIWORD(msg->lParam);  
  11.         const quint32 modifiers = LOWORD(msg->lParam);  
  12.         activateShortcut(keycode, modifiers);  
  13.     }  
  14.     return false;  
  15. }  
  16. 或 x11 下:  
  17. bool QxtGlobalShortcutPrivate::eventFilter(void* message)  
  18. {  
  19.     XEvent* event = static_cast<XEvent*>(message);  
  20.     if (event->type == KeyPress){  
  21.         XKeyEvent* key = (XKeyEvent*) event;  
  22.         activateShortcut(key->keycode, key->state & (ShiftMask | ControlMask | Mod1Mask | Mod4Mask));  
  23.     }  
  24.     return false;  

其中activateShortcut是平臺無關的:

  1. void QxtGlobalShortcutPrivate::activateShortcut(quint32 nativeKey, quint32 nativeMods)  
  2. {  
  3.     QxtGlobalShortcut* shortcut = shortcuts.value(qMakePair(nativeKey, nativeMods));  
  4.     if (shortcut && shortcut->isEnabled())  
  5.         emit shortcut->activated();  

記得前面注冊熱鍵是保存東西到一個QHash么?它是在這兒起作用的,當一個熱鍵到來時,我們從該QHash查找有沒有相應的QxtGlobalShortcut存在,存在且啟用的話,則發射信號。

如何使用

為了便于使用,我們可以在這個文件的同級目錄中添加一個 qxtglobalshortcut.pri 的文件:

  1. INCLUDEPATH += $$PWD  
  2. DEPENDPATH += $$PWD  
  3.  
  4. HEADERS += $$PWD/qxtglobal.h \  
  5.            $$PWD/qxtglobalshortcut.h \  
  6.            $$PWD/qxtglobalshortcut_p.h  
  7. SOURCES += $$PWD/qxtglobalshortcut.cpp  
  8. win32{  
  9.     SOURCES += $$PWD/qxtglobalshortcut_win.cpp  
  10.     LIBS += -luser32  
  11. }  
  12. unix:SOURCES += $$PWD/qxtglobalshortcut_x11.cpp  
  13. mac:SOURCES += $$PWD/qxtglobalshortcut_mac.cpp 

這樣一來,當我們使用時,只需要在我們的pro文件內多加一行:

include(yourpath/qxtglobalshortcut.pri)即可

一個具體的小例子:http://code.google.com/p/h-qt-exercise/downloads/detail?name=shortcut.zip&can=2&q=

小結:Qt 全局熱鍵 QxtGlobalShortcut 分析與使用舉例的內容為大家介紹完了,希望你幫你解決問題。

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-03-23 15:58:50

全局熱鍵QtWindows

2011-06-28 16:18:24

Qt QObject

2010-07-05 11:40:12

GRE協議

2011-06-24 10:05:51

QT 對象 父對象

2009-11-10 16:20:25

VB.NET全局熱鍵

2011-06-24 09:39:05

2011-07-04 15:48:57

Qt 桌面

2023-02-02 09:13:12

Hive壓縮使用性能分析

2011-09-01 15:10:22

Qt數據庫SQL

2011-06-21 17:23:40

QT 編譯

2011-06-22 13:27:04

QT QMap

2011-06-30 10:50:39

Qt OpenCV

2011-06-28 10:03:37

Qt OpenCV qmake

2011-07-01 12:52:50

Ubuntu Qt wxWidgets

2011-06-24 17:22:29

Qt Quick QML

2011-07-04 14:29:25

Qt Designer 容器

2010-12-16 10:00:20

QtVisual Stud

2021-12-27 09:20:13

事務模式隔離

2011-06-28 15:01:01

Qt PIMPL

2011-06-20 17:33:58

Qt MeegoTouch Maemo
點贊
收藏

51CTO技術棧公眾號

精品福利在线视频| 亚洲综合日韩| 欧美一区日本一区韩国一区| 成人在线免费观看网址| 免费看日韩av| 首页综合国产亚洲丝袜| 久热爱精品视频线路一| 久久人妻一区二区| 亚洲电影二区| 天天综合天天做天天综合| 日韩精品资源| 亚洲免费国产视频| 欧美aaaaa成人免费观看视频| xxx欧美精品| 亚洲精品中文字幕在线播放| 青青久久精品| 色综合欧美在线| 老司机午夜网站| 国产小视频福利在线| 国产精品一二二区| 国产精品第二页| 国产在线视频你懂的| 欧美在线免费看视频| 亚洲国产成人精品一区二区 | 韩国av一区| 亚洲视频在线免费看| 911亚洲精选| 日韩一区二区电影在线观看| 日本裸体美女视频| 台湾亚洲精品一区二区tv| 91精品国产乱| 污视频网站观看| 免费成人直播| 福利视频一区二区| 久久av综合网| 四虎影院观看视频在线观看| 国产精品久久久久久久久免费丝袜| 久久成人资源| 免费国产精品视频| 国产精品资源网| 成人午夜小视频| 伊人成人在线观看| 老**午夜毛片一区二区三区| 欧美亚洲成人精品| 国产成人亚洲欧洲在线| 欧美日韩精品免费观看视频完整| 日韩在线精品一区| www.4hu95.com四虎| 国产免费久久| 尤物tv国产一区| 人妻互换一区二区激情偷拍| 国产日韩视频在线| 夜夜嗨av色综合久久久综合网| 一区二区三区免费在线观看视频| 久久亚洲黄色| 亚洲精品自拍第一页| 国产黑丝一区二区| 免费成人三级| 在线成人视屏| 国产精品美女久久久久久2018 | 国内av一区二区| 欧美综合影院| 日韩一本二本av| 在线播放国产视频| 99re8这里有精品热视频免费| 日韩一级大片在线观看| 久久人人爽人人片| 91精品入口| 亚洲国产精品va在线| 国产精品无码专区| 欧美美女在线观看| 中文综合在线观看| 四虎永久免费在线| 狠狠爱综合网| 欧洲美女免费图片一区| 欧美一级淫片免费视频黄| 日韩国产欧美在线播放| 91精品久久久久久久久久| 国产精品伦理一区| 成人免费的视频| 久久综合九色99| www.亚洲视频| 一区二区成人在线观看| 国产亚洲综合视频| 成人av集中营| 精品美女在线播放| 精品少妇人妻一区二区黑料社区| 色777狠狠狠综合伊人| 欧美日韩国产成人在线| 天天操天天摸天天干| 日本午夜精品视频在线观看 | 国产福利一区视频| 粉嫩av国产一区二区三区| 精品国产乱码久久久久久图片 | 欧美性极品少妇精品网站| 无码内射中文字幕岛国片| 亚洲第九十七页| 18加网站在线| 欧美性极品少妇精品网站| 奇米影视四色在线| 狠狠一区二区三区| 色久欧美在线视频观看| 日韩欧美亚洲国产| 久久精品国产亚洲aⅴ| 国产伦精品一区二区三毛| 成人在线观看黄色| 亚洲国产精品久久久久秋霞影院| 国语对白做受xxxxx在线中国| 日本少妇精品亚洲第一区| 日韩精品中文字| 国产精品 欧美激情| 首页国产欧美日韩丝袜| av资源一区二区| 中文字幕日本在线| 欧美日韩一区二区三区| 亚洲911精品成人18网站| 欧美日韩国产免费观看视频| 97国产在线观看| 国产日韩欧美一区二区东京热| 久久久久久久电影| 国产一线二线三线女| 只有精品亚洲| 中文字幕国产日韩| jizz国产在线观看| 99这里只有久久精品视频| 日韩精品福利片午夜免费观看| 日本成人福利| 亚洲午夜色婷婷在线| 日韩欧美不卡视频| 成人激情动漫在线观看| 最新视频 - x88av| 欧美日韩伦理一区二区| 男女男精品视频网| 亚洲乱亚洲乱妇无码| 国产在线拍揄自揄拍无码视频| 蜜桃视频一区二区三区 | 午夜av中文字幕| 国产一区三区在线播放| 欧美一级视频免费在线观看| 黑人乱码一区二区三区av| 亚洲精品视频一区| 911av视频| 久久精品青草| 成人一区二区电影| 伊人免费在线| 欧美日韩一区二区三区四区| 成年人在线免费看片| 亚洲欧美日韩国产综合精品二区| 国产精华一区| 2018av在线| 亚洲的天堂在线中文字幕| 精品无码免费视频| 成人美女在线观看| 日韩人妻无码精品久久久不卡| 日韩在线网址| 91国语精品自产拍在线观看性色 | 亚洲欧美日韩视频一区| 日韩特级黄色片| 久久综合国产精品| 热久久精品国产| 免费一区二区| 国产精品高潮视频| 日本中文字幕在线看| 超碰在线cao| 91国在线观看| 国产视频三区四区| 久久超级碰视频| 99热都是精品| 6080成人| 日本午夜人人精品| 午夜激情在线观看| 日韩精品一区二区三区中文不卡| 免费中文字幕视频| 99久久免费国产| 久草综合在线观看| 亚洲第一天堂| 国产精品v欧美精品∨日韩| 玖玖在线播放| 视频在线一区二区| 午夜精品久久久久久久99| 欧美日韩精品在线视频| 亚洲女优在线观看| 国产九九视频一区二区三区| 黄色成人在线看| 欧美精品一区二区三区中文字幕| 91精品国产综合久久香蕉| 成人影音在线| 在线午夜精品自拍| 性欧美videos另类hd| 黑人巨大精品欧美一区免费视频 | 欧美日韩激情视频| 免费观看特级毛片| 成人精品视频.| 久久黄色免费看| 欧美二区视频| 日韩精品无码一区二区三区| 在线精品视频一区| 国产精品高潮呻吟久久av黑人| 菠萝菠萝蜜在线观看| 亚洲国产第一页| 国产精品无码白浆高潮| 精品久久久国产精品999| 日本爱爱小视频| 91麻豆免费视频| 日批视频在线看| 日韩二区在线观看| 亚洲熟妇无码一区二区三区导航| 日韩免费视频| 久久综合毛片| 一区二区免费| 国产日产欧美a一级在线| 精品捆绑调教一区二区三区| 久久亚洲电影天堂| 高清毛片在线看| 亚洲第一综合天堂另类专| 一本色道久久综合精品婷婷| 欧美性黄网官网| 亚洲国产精品成人无久久精品| 欧美国产日韩精品免费观看| 一边摸一边做爽的视频17国产| 精品一区免费av| 无码人妻丰满熟妇区毛片| 激情成人综合| 麻豆一区二区三区在线观看| 区一区二视频| 日韩高清dvd| 群体交乱之放荡娇妻一区二区| 91亚洲永久免费精品| 成人黄色图片网站| 秋霞成人午夜鲁丝一区二区三区| heyzo一区| 欧美极品美女视频网站在线观看免费| 欧美性天天影视| 中文字幕欧美国内| 国产视频精选在线| 亚洲片在线观看| 亚洲av电影一区| 亚洲精品videossex少妇| 亚洲欧美另类一区| 免费在线成人网| 久久久久久久久爱| 搞黄网站在线观看| 久久精品人人爽| 免费看美女视频在线网站| 丝袜情趣国产精品| 91精品专区| 俺去亚洲欧洲欧美日韩| 欧美天天影院| 萌白酱国产一区二区| 羞羞的视频在线观看| 欧美成人性生活| 毛片大全在线观看| 久久免费成人精品视频| xxx.xxx欧美| 57pao成人永久免费视频| 中文在线免费视频| 国产成人精品网站| 国产精品亚洲成在人线| 国产一区二区在线免费| 成人污污视频| 成人欧美一区二区三区在线观看 | 日本不卡网站| 日本aⅴ大伊香蕉精品视频| 不卡一二三区| 国产男人精品视频| 日韩精品成人在线观看| 国产伦精品一区二区三区视频孕妇 | 噜噜噜躁狠狠躁狠狠精品视频| 欧洲av无码放荡人妇网站| 水蜜桃久久夜色精品一区的特点| 日本高清久久久| 国产精品亚洲视频| 中文字幕在线观看网址| 国产精品天美传媒沈樵| 三级影片在线看| 偷拍日韩校园综合在线| 天堂中文字幕在线观看| 欧美日韩在线综合| 国模人体一区二区| 亚洲欧美国产视频| 嫩草在线视频| 午夜精品一区二区三区av| 激情开心成人网| 91中文在线观看| 日韩av字幕| 一区不卡字幕| 亚洲欧洲一区| 一级黄色录像在线观看| 99精品国产99久久久久久白柏| 美女100%露胸无遮挡| 一区二区三区.www| 国产成人无码专区| 欧美videos大乳护士334| 蜜桃视频在线免费| 欧美日韩成人精品| 欧美日韩不卡| 国产精品中出一区二区三区| 第一社区sis001原创亚洲| av女优在线播放| 麻豆精品视频在线| jizz日本免费| 亚洲一区在线观看免费观看电影高清| av片免费观看| 亚洲精品久久7777777| 国内精品久久久久久野外| 欧美重口另类videos人妖| 日本少妇精品亚洲第一区| 亚洲国产综合自拍| 亚洲一区一卡| 国产精九九网站漫画| 国产精品久久久久三级| 久久国产视频精品| 精品少妇一区二区三区| 日本三级在线播放完整版| 欧美一区二区三区免费视| 国产精品视频a| 精品一区二区精品| 中文字幕在线播放一区| 亚洲精品久久久蜜桃| 一级特黄色大片| 亚洲午夜未满十八勿入免费观看全集| 国产精品—色呦呦| 97se国产在线视频| 欧美freesextv| 亚洲天堂2018av| 国产日韩一级二级三级| 成人毛片在线播放| 亚洲国产天堂久久国产91 | 精品国产视频| 国产日产欧美视频| av资源网一区| 精品视频久久久久| 精品国产电影一区二区 | 欧美一区在线直播| 欧美黑人巨大videos精品| 国产资源在线免费观看| 国产激情视频一区二区在线观看 | 91探花福利精品国产自产在线| 国产精品一区二区三区av麻| 国产a级一级片| 久久亚洲二区三区| 日韩美一区二区| 亚洲人成亚洲人成在线观看| 成人福利av| 日本一区二区视频| 日本午夜精品视频在线观看| 亚洲无人区码一码二码三码的含义| 欧洲视频一区二区| seseavlu视频在线| 国产九九精品视频| 91久久高清国语自产拍| 91网址在线观看精品| 亚洲女人小视频在线观看| 韩国一区二区三区四区| 一区二区三区在线资源| 影音先锋欧美资源| 国产一区二区免费在线| 欧美又粗又大又长| 亚洲第一页自拍| 久久久一本精品| 亚洲免费在线精品一区| 国产在线观看免费一区| 成人免费视频网站入口::| 精品国内二区三区| 多野结衣av一区| 日本视频一区二区在线观看| 日欧美一区二区| 国产成人自拍网站| 精品国产一区二区三区不卡 | 久草免费在线观看| 亚洲专区国产精品| 亚洲精品乱码| 免费看的黄色录像| 日韩一区二区影院| 国产伦久视频在线观看| 欧美午夜精品久久久久免费视| 蜜桃久久久久久久| 黄色小说在线观看视频| 亚洲精品之草原avav久久| 四虎国产精品永久在线国在线| 99re8这里只有精品| 91丨porny丨户外露出| 中文字幕一二三四| 欧美日韩国产二区| 精品一区不卡| 97中文字幕在线观看| 91成人免费网站| 日本在线视频中文有码| 欧美在线日韩精品| 国产精品夜夜嗨| 糖心vlog精品一区二区| 欧美日韩成人精品| 成人国产精品一级毛片视频| 亚洲精品成人无码毛片| 在线观看精品一区| 毛片大全在线观看| 亚洲五月六月| 久久午夜免费电影| 午夜精品久久久久久久96蜜桃 | 欧美福利在线观看|