精品欧美一区二区三区在线观看 _久久久久国色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网站在线播放| 在线国产日韩| 亚洲女人天堂av| 亚洲综合在线网站| 第一福利在线| 国产福利电影一区二区三区| 91精品国产乱码久久久久久蜜臀| a级片在线观看| 亚洲伦理一区二区| 一区二区三区在线观看国产 | 久久夜夜久久| 一区二区三区中文字幕精品精品| 久久亚洲综合网| 97人妻精品一区二区三区视频| 精品成人在线| 色悠悠久久88| 亚洲成av人片在线观看无| 国产69精品久久| 亚洲国产精品久久久久婷婷884 | 国产成人精品日本亚洲11| 无码人妻av一区二区三区波多野| 国产高清一区二区| 日韩黄色高清视频| 黑人无套内谢中国美女| 欧美日韩五码| 亚洲国产成人91porn| 一区二区三区av| 三级视频在线| 成人一道本在线| 91丝袜美腿美女视频网站| 亚洲影院在线播放| 精品动漫av| 欧美成aaa人片在线观看蜜臀| 男生草女生视频| 国产成人高清精品免费5388| 欧美日韩免费一区二区三区 | 97精品在线播放| 免费精品国产| 日韩电影在线观看永久视频免费网站| 亚洲无在线观看| 福利精品一区| 在线观看一区二区视频| 国产视频九色蝌蚪| 亚洲电影激情视频网站| 色综合久久88| 一级黄色录像毛片| 亚洲精品国产setv| 亚洲黄色av女优在线观看| 91香蕉视频免费看| 欧美xnxx| 色婷婷综合在线| 国产精品沙发午睡系列| 成人观看网址| 婷婷久久综合九色国产成人| 男人添女荫道口图片| 美女网站视频在线| 亚洲一区免费在线观看| www.欧美黄色| 伦理av在线| 亚洲国产va精品久久久不卡综合 | 欧美三级三级| 亚洲视频精品在线| 亚洲国产日韩一区无码精品久久久| 偷拍视屏一区| 亚洲视频在线视频| 69xxx免费| 婷婷伊人综合| 欧美激情一级欧美精品| 国产午夜福利一区二区| 一本久道久久综合婷婷鲸鱼| 57pao精品| 国产精品午夜一区二区| 韩国v欧美v日本v亚洲v| 成人精品一二区| 蜜桃av噜噜一区二区三区麻豆| 国产福利一区在线观看| 极品日韩久久| 国产高清视频在线观看| 中文字幕中文乱码欧美一区二区| 在线观看免费91| 羞羞的视频在线看| 精品福利在线看| 午夜久久久精品| 日韩成人久久| 日韩精品久久久久久久玫瑰园| 老牛影视av老牛影视av| 日韩激情在线| 欧美华人在线视频| 免费黄色网址在线| 另类小说一区二区三区| 99久久精品免费看国产一区二区三区| 天天躁日日躁狠狠躁伊人| 久久精品欧美一区二区三区麻豆| 亚洲 欧洲 日韩| 爱啪视频在线观看视频免费| 91国在线观看| 色哟哟在线观看视频| 欧美日韩另类图片| 日韩在线视频播放| 久草精品视频在线观看| 青青草成人在线观看| 3d动漫啪啪精品一区二区免费| 五月婷婷丁香六月| 国产精品久久久久久一区二区三区| 国产免费内射又粗又爽密桃视频| а√天堂中文资源在线bt| 欧美视频精品在线| 中国极品少妇videossexhd| 四季av一区二区三区免费观看| 欧美大片网站在线观看| 最近中文字幕在线视频| eeuss鲁片一区二区三区在线观看| 偷拍视频一区二区| 国产精品电影| 欧美一区二区精品在线| 国产熟妇久久777777| 午夜久久福利| 国产欧美在线观看| 九色在线播放| 亚洲国产精品天堂| 手机看片国产精品| 日韩精品一区二区久久| 欧洲永久精品大片ww免费漫画| www黄色网址| 国产精品久久久久久亚洲伦 | 久久久男人天堂| 日韩手机在线导航| 精品视频第一页| 丝袜脚交一区二区| 九九九九精品九九九九| a视频在线观看免费| 欧美午夜电影网| 蜜桃av免费看| 久久久夜精品| 美日韩精品免费| av资源中文在线| 亚洲成色777777女色窝| 激情五月婷婷在线| 国产一区二区三区在线观看免费 | 成人性生交大片免费看视频直播| 久久精品国产亚洲a∨麻豆| 激情亚洲一区二区三区四区| 午夜视频在线免费看| 综合天堂av久久久久久久| 成人精品久久久| 久久国产精品一区| 在线电影院国产精品| 亚洲精品久久久久久国| 精品中文av资源站在线观看| 亚洲成人自拍视频| 国产亚洲人成a在线v网站| 国产一区二区三区在线视频 | 97超碰在线免费| 亚洲成人黄色在线观看| 久久亚洲AV无码| 成人国产精品免费观看视频| 成人黄色大片网站| 欧美激情网址| 日韩av手机在线看| 成人免费在线观看| 3atv在线一区二区三区| 青青草在线观看视频| 国产福利一区二区三区| 国内精品视频一区二区三区| 欧美挤奶吃奶水xxxxx| 国产91在线播放| 网友自拍视频在线| 欧美一区二区视频网站| 中文字幕第28页| 久久综合九色综合97_久久久| 日本在线视频www| 精品国产91乱码一区二区三区四区 | 蜜桃av一区二区| 日韩video| 蜜桃久久久久| 国产精品www网站| www免费在线观看| 亚洲成人aaa| 久久精品99北条麻妃| 亚洲欧美激情小说另类| 91精品又粗又猛又爽| 久久亚洲风情| 男同互操gay射视频在线看| 欧美美女在线直播| 国产欧美婷婷中文| 白浆视频在线观看| 日韩在线观看免费av| 午夜精品一区二区三| 色综合久久久久久久| 国产麻豆视频在线观看| www.一区二区| 手机av在线免费| 亚洲精品黄色| 中文字幕日韩一区二区三区不卡| 亚洲丝袜在线观看| 激情欧美一区二区三区| 欧美视频1区| 亚洲一区导航| 亚洲国产高清aⅴ视频| 九九热视频免费| 香蕉亚洲视频| 日本a在线天堂| 久久99视频| 99国产在线| 成人黄色图片网站| 久久人人爽人人爽人人片av高清| 国产青青草在线| 精品动漫一区二区三区在线观看| 亚洲欧美偷拍一区| 怡红院av一区二区三区| av电影网站在线观看| 风流少妇一区二区| 少妇一级淫免费放| 国产精品呻吟| 无码人妻精品一区二区蜜桃网站| jizzjizz欧美69巨大| 国产精品日韩高清| 动漫一区二区三区| 国产精品福利网站| 91视频欧美| 免费视频最近日韩| 久久久精品免费观看| 国产中文字幕二区| 91精品啪在线观看国产81旧版| 欧美第一黄网| 精品国产一区二区三区不卡蜜臂 | 国产裸体歌舞团一区二区| 欧美日韩在线不卡视频| 伊人成人在线视频| 国产精品videossex国产高清 | 中文字幕视频精品一区二区三区| 国产精品久久久久久久久久三级 | 成人h片在线播放免费网站| 视频二区不卡| 日本久久久久久| 正在播放日韩精品| 5252色成人免费视频| www.51av欧美视频| 性色av香蕉一区二区| 国产91足控脚交在线观看| 欧美裸身视频免费观看| 麻豆视频在线观看免费网站| 色悠悠久久久久| 久草中文在线观看| 久久久电影免费观看完整版| 三级外国片在线观看视频| 中文字幕精品在线视频| 在线观看免费黄视频| 中文字幕国内精品| 四虎久久免费| 伦伦影院午夜日韩欧美限制| 国产素人视频在线观看| 欧美成人免费在线视频| 青草在线视频| 97久久伊人激情网| 成人国产二区| 国产精品久久中文| 亚洲精品三区| 超碰97人人人人人蜜桃| 久久综合五月婷婷| 日本不卡高清视频一区| 日韩三级在线| 黑人巨茎大战欧美白妇| 在线欧美日韩| 日韩avxxx| 日韩精品电影一区亚洲| 亚洲欧美偷拍另类| 国产成人免费视频网站| 少妇一级淫片免费放播放| 久久婷婷色综合| 亚洲欧美综合7777色婷婷| 亚洲综合色网站| 波多野结衣国产| 欧美日韩一级片在线观看| 国产美女永久免费| 欧美精品一区二区蜜臀亚洲| 精品福利视频导航大全| 日韩亚洲第一页| 91精品国产黑色瑜伽裤| 国产精品久久久久77777| 欧美专区一区| 欧美日韩亚洲免费| 亚洲精品中文字幕乱码| 黄色一级在线视频| 麻豆久久久久久| 91精品啪在线观看国产| 国产日韩一级二级三级| 国产一二三四区| 色综合久久天天综合网| 国产色片在线观看| 亚洲男女自偷自拍图片另类| 精精国产xxxx视频在线| 91精品国产自产91精品| 91精品麻豆| 女女同性女同一区二区三区91| 亚洲成人tv| 国产欧美高清在线| 国产盗摄视频一区二区三区| 一区二区三区伦理片| 一区二区三区精品| 中文字幕乱码一区二区 | 亚洲free性xxxx护士白浆| 露出调教综合另类| 五月天综合婷婷| 久久久综合网| 精品1卡二卡三卡四卡老狼| 国产精品久久久久久久久免费桃花 | 国产99久久精品一区二区永久免费| 蜜桃在线一区| 在线不卡日本| 日韩中文字幕亚洲一区二区va在线 | 九七电影院97理论片久久tvb| 九九九九久久久久| 狠狠久久婷婷| 一二三级黄色片| 中文字幕va一区二区三区| 黄色一级片免费在线观看| 日韩精品专区在线影院重磅| 欧美成人hd| 国产精品久久久久久久久久久久| 久久中文资源| 国产一级爱c视频| 丁香亚洲综合激情啪啪综合| 国产精品国产三级国产传播| 欧美午夜精品免费| 春暖花开成人亚洲区| 日本精品性网站在线观看| 色吊丝一区二区| jizzjizz国产精品喷水| 成人综合激情网| 久草视频免费在线| 欧美r级在线观看| 亚洲丝袜精品| 亚洲一区二区自拍| 亚洲欧洲日韩| 一级黄色大片儿| 亚洲蜜臀av乱码久久精品| 国产亲伦免费视频播放| 中文字幕日韩视频| 久久精品黄色| 亚洲欧洲久久| 久久国产精品第一页| 国产小视频你懂的| 欧美高清性hdvideosex| 欧美尤物美女在线| 91精品中国老女人| 欧美一区影院| 久久久久亚洲av无码专区首jn| 一区二区三区在线播放| 成人午夜免费福利| 91精品国产91久久| 免费看日本一区二区| 日韩免费高清在线| 国产精品女上位| 国产日韩免费视频| 久久久久成人网| 日韩精品a在线观看91| 久久人妻精品白浆国产 | 一区二区精品免费视频| 国产一区二区美女| 国产亚洲自拍av| 日韩电影免费观看中文字幕 | 91国产在线播放| 狠狠综合久久| 国产精品无码网站| 欧美少妇bbb| 国产探花视频在线观看| 久久久久久久有限公司| 日韩av电影一区| 日本中文字幕免费在线观看| 欧美精品一区二区三区蜜臀| 亚洲精品一区| 一区二区三区四区| 成人午夜激情影院| 无码人妻久久一区二区三区不卡| 日韩在线欧美在线国产在线| 亚洲一区二区三区四区电影| 欧美牲交a欧美牲交| 中文一区一区三区高中清不卡| 国产三区在线播放| 欧美一级大片在线观看| 久久综合电影| www.88av| 7777精品伊人久久久大香线蕉的| 黄色成人在线网| 日韩影院一区| 成人性视频网站| 中文天堂在线视频| 久久久久日韩精品久久久男男| 精品国产一区二区三区噜噜噜 | 午夜在线观看av| 亚洲国产美国国产综合一区二区| 成年在线电影| 国产精品久久一区二区三区| 免费看欧美女人艹b| 国产午夜在线播放| 久久久精品国产| 精品国产一区二区三区香蕉沈先生| 中文字幕在线播放一区二区|