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

在Windows操作系統(tǒng)下的Qt全局熱鍵

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

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

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

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

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

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

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

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

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

  1. ATOM GlobalDeleteAtom( ATOM nAtom ) 

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

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

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

  1. BOOL UnregisterHotKey(HWND hWnd,     int id ) 

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

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

【編輯推薦】

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

2010-05-12 15:34:26

MySQL編碼設(shè)置

2009-02-20 19:56:26

WindowsLinux雙系統(tǒng)

2011-06-20 11:14:09

Qt QxtGlobalS 熱鍵

2010-04-19 15:11:25

Unix操作系統(tǒng)

2009-12-08 18:02:50

2009-04-01 14:42:11

操作系統(tǒng)同步MySQL

2009-12-15 10:47:29

linux操作系統(tǒng)

2011-01-05 10:32:31

linuxqq

2009-06-25 08:55:53

Linux

2009-07-07 09:18:13

UNIX操作系統(tǒng)

2009-06-19 20:35:07

Linux操作系統(tǒng)

2014-08-21 09:48:33

操作系統(tǒng)

2010-08-11 11:13:27

DB2 pe

2009-12-04 17:54:07

Windows 7操作

2010-04-14 16:45:15

Unix操作系統(tǒng)

2009-04-22 08:58:24

Windows 7微軟操作系統(tǒng)

2014-04-22 10:25:31

Windows 10云操作系統(tǒng)

2012-03-09 09:45:29

Windows嵌入式操作系統(tǒng)

2009-08-19 09:43:41

Windows 7輸入公式

2019-09-29 09:18:11

中科創(chuàng)達(dá)操作系統(tǒng)工程AIoT
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 91色综合| 亚洲天天干 | 天堂网中文字幕在线观看 | 亚洲综合婷婷 | 91视频进入 | 亚洲免费婷婷 | 日韩在线视频精品 | 久久久久一区二区三区 | 久久国产精品久久久久久久久久 | 成人精品鲁一区一区二区 | 国产福利二区 | 米奇7777狠狠狠狠视频 | 久久爱综合| 91精品国产91久久综合桃花 | .国产精品成人自产拍在线观看6 | 国产一区三区在线 | 国产高清视频一区二区 | 久久亚 | 国产一级视屏 | 欧美国产日韩一区二区三区 | 一级黄色网页 | 成人a视频 | 特级丰满少妇一级aaaa爱毛片 | 我想看一级黄色毛片 | 资源首页二三区 | 日韩国产一区 | 日韩中文在线 | 亚洲视频免费观看 | 成人精品一区二区 | 中文字幕免费在线 | 亚洲成人黄色 | 国产亚洲精品久久久久久牛牛 | 成年人精品视频在线观看 | 天天干天天草 | 午夜影院黄 | 99国产精品99久久久久久粉嫩 | 91亚洲精品国偷拍自产在线观看 | 国产一区二区三区在线 | 国产成人精品a视频一区www | 欧美精品久久久久久久久久 | 精品网|