成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在Windows操作系統下的Qt全局熱鍵

移動開發
Qt對于系統底層,一直沒有很好的支持,例如串口并口通信,還有我們經常都會用到的全局熱鍵,等等。

Qt對于系統底層,一直沒有很好的支持,例如串口并口通信,還有我們經常都會用到的全局熱鍵,等等。既然Qt可能出于某種原因,不對這些進行支持,我們就只能自己寫代碼,調用系統相關的API了。

注意,這個是Windows篇,就說明這些代碼只支持windows系統。同時,也說明肯定還有其他平臺的要寫。

在Qt要調用Windows的API其實很簡單,只要在需要用到的頭文件中添加#include <windows.h>即可。不過要注意,Qt僅支持win32的API,像MFC之類的是不支持的。

想要在Qt里使用全局熱鍵,最好的辦法是重載QApplication里的winEventFilter函數。這個函數是用來響應Windows系統信息的。其函數原型為virtual bool winEventFilter(MSG *msg, long *result)。當msg指針中的message(MSG結構中的一個元素)為WM_HOTKEY類型時,就是用戶激發了熱鍵。整個過程和在VC的消息響應機制很類似,只不過換成了Qt而已。

而如果我們想要添加自己的全局熱鍵,只需要使用RegisterHotKey函數即可。其函數原型為:

  1. BOOL RegisterHotKey( HWND hWnd,     int id,     UINT fsModifiers,     UINT vk ); 

HWND類型是Windows中的窗口句柄類型,在Qt中,QWidget及其子類均可使用winId()函數得到。

第二個參數,是一個原子操作類型,用ATOM GlobalAddAtom(LPCTSTR lpString )函數得到。這也是一個Win32API,根據一個string參數可以得到一個唯一的值。使用完之后,必須使用GlobalDeleteAtom函數刪除掉整個ATOM。其函數原型為

  1. ATOM GlobalDeleteAtom( ATOM nAtom ) 

后面兩個參數,一個是修飾鍵,一個是普通按鍵。例如,假設我們想注冊Ctrl+F4這個熱鍵組合,則fsModifiers就是MOD_CONTROL,而vk就是VK_F4。

如果注冊成功,就返回true,否則,返回false。

注意,使用完之后,要使用UnregisterHotKey函數注銷,否則你可能再也無法注冊這個熱鍵了!除非重啟。其函數原型為:

  1. BOOL UnregisterHotKey(HWND hWnd,     int id ) 

ok,熱鍵注冊就完成了。當按下熱鍵后,我們就會在QApplication里的winEventFilter函數中收到一個msg。這個msg,前面也說過,我們需要知道它的一個元素message是不是WM_HOTKEY。如果是,就證明我們收到了Windows系統的熱鍵信息。在MSG結構中,我們可能還需要理解的元素有兩個,分別是wParam和lParam。wParam是注冊熱鍵時所用的id,也就是ATOM(原子)。而lParam就是我們的熱鍵了。其實際上是一個32位的類型,前面16位代表普通按鍵,后16位代表的是修飾鍵。

至此,Qt在Windows下使用全局熱鍵就完成了。如果有興趣的朋友,還可以自己嘗試一下,修改或直接自己寫一份代碼。

【編輯推薦】

  1. QML教程:Qtmediahub項目概述
  2. QML教程:Qt-Quick六大開源組件
  3. QML教程:構建和安裝QtComponents
  4. Qt in Scala(JVM)開發梗概
  5. 用Scala實現Qt QWidget對象的Eventable接口
責任編輯:佚名 來源: cuteqt
相關推薦

2010-05-12 15:34:26

MySQL編碼設置

2009-02-20 19:56:26

WindowsLinux雙系統

2011-06-20 11:14:09

Qt QxtGlobalS 熱鍵

2010-04-19 15:11:25

Unix操作系統

2009-12-08 18:02:50

2009-04-01 14:42:11

操作系統同步MySQL

2009-12-15 10:47:29

linux操作系統

2011-01-05 10:32:31

linuxqq

2009-06-25 08:55:53

Linux

2009-07-07 09:18:13

UNIX操作系統

2009-06-19 20:35:07

Linux操作系統

2014-08-21 09:48:33

操作系統

2010-08-11 11:13:27

DB2 pe

2009-12-04 17:54:07

Windows 7操作

2010-04-14 16:45:15

Unix操作系統

2009-04-22 08:58:24

Windows 7微軟操作系統

2014-04-22 10:25:31

Windows 10云操作系統

2012-03-09 09:45:29

Windows嵌入式操作系統

2009-08-19 09:43:41

Windows 7輸入公式

2019-09-29 09:18:11

中科創達操作系統工程AIoT
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一本久久a久久精品亚洲 | 午夜在线影院 | 亚洲成人午夜在线 | 一区二区在线免费观看 | 一区二区国产精品 | 亚洲一区二区电影在线观看 | 一级电影免费看 | 久精品久久 | 香蕉久久a毛片 | 天天射美女 | 国产欧美日韩一区 | 亚洲欧美日韩系列 | 一区二区播放 | 国产精品久久久久久av公交车 | 日韩国产中文字幕 | 91国自视频 | 日本精品一区二区三区视频 | 日韩欧美在线不卡 | 成人免费在线视频 | 中文字幕影院 | 日韩a视频| 亚洲精品视频导航 | 91精品国产综合久久久密闭 | 亚洲网站免费看 | 美女天天操 | 久久国产精品一区二区三区 | 亚洲免费精品 | h视频在线播放 | 三级成人在线 | 国产内谢 | 亚洲精品视频免费看 | 99久久99热这里只有精品 | 国产欧美精品一区二区三区 | 午夜视频在线观看一区二区 | 亚洲色图综合 | 国产精品一区在线播放 | 国产综合精品 | 四色永久| 欧美日韩1区2区3区 欧美久久一区 | 一区二区三区四区免费在线观看 | 国产91在线 | 亚洲 |