QKeyEvent

6 篇文章 0 订阅

1.简介

QT键盘按键事件实际使用的是重写keyPressEvent的方式实现的,keyPressEvent这是一个虚方法,在代码中重写之后就可以添加自己的响应函数了。

1.1键盘按下事件

void QWidget::keyPressEvent ( QKeyEvent * e )
这个事件处理器可以在子类中被重新实现用来接收这个窗口部件的键盘按下事件。窗口部件最初必须调用setFocusPolicy()来接收焦点并且得到焦点用来接收键盘释放事件。如果你重新实现这个处理器,如果你不能理解这个事件,你就忽略(ignore())这个事件,这是很重要的,这样这个窗口部件的父对象就可以说明它。默认实现是如果用户按下Esc就关闭弹出窗口部件。否则这个事件就被忽略。也可以参考keyReleaseEvent()、QKeyEvent::ignore()、focusPolicy, focusInEvent()、focusOutEvent()、event()和QKeyEvent。在QLineEdit、QTextEdit和QtMultiLineEdit中被重新实现。

1.2按键释放事件

void QWidget::keyReleaseEvent ( QKeyEvent * e )
这个事件处理器可以在子类中被重新实现用来接收这个窗口部件的键盘释放事件。窗口部件最初必须调用setFocusPolicy()来接收焦点并且得到焦点用来接收键盘释放事件。如果你重新实现这个处理器,如果你不能理解这个事件,你就忽略(ignore())这个事件,这是很重要的,这样这个窗口部件的父对象就可以说明它。默认实现就是忽略这个事件。也可以参考keyPressEvent()、QKeyEvent::ignore()、focusPolicy、focusInEvent()、focusOutEvent()、event()和QKeyEvent。

2源码实例

源码文件:

key.pro  
main.cpp  
mainwindow.cpp  
mainwindow.h  
mainwindow.ui

UI界面:

事件响应函数代码:

// 键盘按下事件
void MainWindow::keyPressEvent(QKeyEvent *event)
{
    // 是否按下Ctrl键
    if(event->modifiers() == Qt::ControlModifier)
    {
        // 是否按下M键
        if(event->key() == Qt::Key_M)
            // 窗口最大化
            setWindowState(Qt::WindowMaximized);
    }
    else if(event->key() == Qt::Key_Q)
        ui->label->setText("按下Q键");
    else if(event->key() == Qt::Key_W)
        ui->label->setText("按下W键");
    else if(event->key() == Qt::Key_E)
        ui->label->setText("按下E键");
    else if(event->key() == Qt::Key_R)
        ui->label->setText("按下R键");
    else QWidget::keyPressEvent(event);
}

代码中实现了按键值直接在界面上面显示出来,安装ctrl+M键窗口实现最大化,执行效果:

工程源码可以下载:

https://gitee.com/kslly/QTExample/tree/master/keyEvent

https://download.csdn.net/download/kongshuai19900505/10659344

3附件

按键中的值被都在qnamespace.h的头文件中的enum Key枚举类型内,代码中仅仅验证了少数几个键值,如下表这里面列举了所有的键值

ConstantValueDescriptionConstantValueDescription
Qt::Key_Escape0x01000000 Qt::Key_Muhenkan0x01001122 
Qt::Key_Tab0x01000001 Qt::Key_Henkan0x01001123 
Qt::Key_Backtab0x01000002 Qt::Key_Romaji0x01001124 
Qt::Key_Backspace0x01000003 Qt::Key_Hiragana0x01001125 
Qt::Key_Return0x01000004 Qt::Key_Katakana0x01001126 
Qt::Key_Enter0x01000005Typically located on the keypad.Qt::Key_Hiragana_Katakana0x01001127 
Qt::Key_Insert0x01000006 Qt::Key_Zenkaku0x01001128 
Qt::Key_Delete0x01000007 Qt::Key_Hankaku0x01001129 
Qt::Key_Pause0x01000008The Pause/Break key (Note: Not related to pausing media)Qt::Key_Zenkaku_Hankaku0x0100112a 
Qt::Key_Print0x01000009 Qt::Key_Touroku0x0100112b 
Qt::Key_SysReq0x0100000a Qt::Key_Massyo0x0100112c 
Qt::Key_Clear0x0100000b Qt::Key_Kana_Lock0x0100112d 
Qt::Key_Home0x01000010 Qt::Key_Kana_Shift0x0100112e 
Qt::Key_End0x01000011 Qt::Key_Eisu_Shift0x0100112f 
Qt::Key_Left0x01000012 Qt::Key_Eisu_toggle0x01001130 
Qt::Key_Up0x01000013 Qt::Key_Hangul0x01001131 
Qt::Key_Right0x01000014 Qt::Key_Hangul_Start0x01001132 
Qt::Key_Down0x01000015 Qt::Key_Hangul_End0x01001133 
Qt::Key_PageUp0x01000016 Qt::Key_Hangul_Hanja0x01001134 
Qt::Key_PageDown0x01000017 Qt::Key_Hangul_Jamo0x01001135 
Qt::Key_Shift0x01000020 Qt::Key_Hangul_Romaja0x01001136 
Qt::Key_Control0x01000021On Mac OS X, this corresponds to the Command keys.Qt::Key_Hangul_Jeonja0x01001138 
Qt::Key_Meta0x01000022On Mac OS X, this corresponds to the Control keys. On Windows keyboards, this key is mapped to the Windows key.Qt::Key_Hangul_Banja0x01001139 
Qt::Key_Alt0x01000023 Qt::Key_Hangul_PreHanja0x0100113a 
Qt::Key_AltGr0x01001103On Windows, when the KeyDown event for this key is sent, the Ctrl+Alt modifiers are also set.Qt::Key_Hangul_PostHanja0x0100113b 
Qt::Key_CapsLock0x01000024 Qt::Key_Hangul_Special0x0100113f 
Qt::Key_NumLock0x01000025 Qt::Key_Dead_Grave0x01001250 
Qt::Key_ScrollLock0x01000026 Qt::Key_Dead_Acute0x01001251 
Qt::Key_F10x01000030 Qt::Key_Dead_Circumflex0x01001252 
Qt::Key_F20x01000031 Qt::Key_Dead_Tilde0x01001253 
Qt::Key_F30x01000032 Qt::Key_Dead_Macron0x01001254 
Qt::Key_F40x01000033 Qt::Key_Dead_Breve0x01001255 
Qt::Key_F50x01000034 Qt::Key_Dead_Abovedot0x01001256 
Qt::Key_F60x01000035 Qt::Key_Dead_Diaeresis0x01001257 
Qt::Key_F70x01000036 Qt::Key_Dead_Abovering0x01001258 
Qt::Key_F80x01000037 Qt::Key_Dead_Doubleacute0x01001259 
Qt::Key_F90x01000038 Qt::Key_Dead_Caron0x0100125a 
Qt::Key_F100x01000039 Qt::Key_Dead_Cedilla0x0100125b 
Qt::Key_F110x0100003a Qt::Key_Dead_Ogonek0x0100125c 
Qt::Key_F120x0100003b Qt::Key_Dead_Iota0x0100125d 
Qt::Key_F130x0100003c Qt::Key_Dead_Voiced_Sound0x0100125e 
Qt::Key_F140x0100003d Qt::Key_Dead_Semivoiced_Sound0x0100125f 
Qt::Key_F150x0100003e Qt::Key_Dead_Belowdot0x01001260 
Qt::Key_F160x0100003f Qt::Key_Dead_Hook0x01001261 
Qt::Key_F170x01000040 Qt::Key_Dead_Horn0x01001262 
Qt::Key_F180x01000041 Qt::Key_Back0x01000061 
Qt::Key_F190x01000042 Qt::Key_Forward0x01000062 
Qt::Key_F200x01000043 Qt::Key_Stop0x01000063 
Qt::Key_F210x01000044 Qt::Key_Refresh0x01000064 
Qt::Key_F220x01000045 Qt::Key_VolumeDown0x01000070 
Qt::Key_F230x01000046 Qt::Key_VolumeMute0x01000071 
Qt::Key_F240x01000047 Qt::Key_VolumeUp0x01000072 
Qt::Key_F250x01000048 Qt::Key_BassBoost0x01000073 
Qt::Key_F260x01000049 Qt::Key_BassUp0x01000074 
Qt::Key_F270x0100004a Qt::Key_BassDown0x01000075 
Qt::Key_F280x0100004b Qt::Key_TrebleUp0x01000076 
Qt::Key_F290x0100004c Qt::Key_TrebleDown0x01000077 
Qt::Key_F300x0100004d Qt::Key_MediaPlay0x01000080A key setting the state of the media player to play
Qt::Key_F310x0100004e Qt::Key_MediaStop0x01000081A key setting the state of the media player to stop
Qt::Key_F320x0100004f Qt::Key_MediaPrevious0x01000082 
Qt::Key_F330x01000050 Qt::Key_MediaNext0x01000083 
Qt::Key_F340x01000051 Qt::Key_MediaRecord0x01000084 
Qt::Key_F350x01000052 Qt::Key_MediaPause0x1000085A key setting the state of the media player to pause (Note: not the pause/break key)
Qt::Key_Super_L0x01000053 Qt::Key_MediaTogglePlayPause0x1000086A key to toggle the play/pause state in the media player (rather than setting an absolute state)
Qt::Key_Super_R0x01000054 Qt::Key_HomePage0x01000090 
Qt::Key_Menu0x01000055 Qt::Key_Favorites0x01000091 
Qt::Key_Hyper_L0x01000056 Qt::Key_Search0x01000092 
Qt::Key_Hyper_R0x01000057 Qt::Key_Standby0x01000093 
Qt::Key_Help0x01000058 Qt::Key_OpenUrl0x01000094 
Qt::Key_Direction_L0x01000059 Qt::Key_LaunchMail0x010000a0 
Qt::Key_Direction_R0x01000060 Qt::Key_LaunchMedia0x010000a1 
Qt::Key_Space0x20 Qt::Key_Launch00x010000a2On X11 this key is mapped to "My Computer" (XF86XK_MyComputer) key for legacy reasons.
Qt::Key_AnyKey_Space Qt::Key_Launch10x010000a3On X11 this key is mapped to "Calculator" (XF86XK_Calculator) key for legacy reasons.
Qt::Key_Exclam0x21 Qt::Key_Launch20x010000a4On X11 this key is mapped to XF86XK_Launch0 key for legacy reasons.
Qt::Key_QuoteDbl0x22 Qt::Key_Launch30x010000a5On X11 this key is mapped to XF86XK_Launch1 key for legacy reasons.
Qt::Key_NumberSign0x23 Qt::Key_Launch40x010000a6On X11 this key is mapped to XF86XK_Launch2 key for legacy reasons.
Qt::Key_Dollar0x24 Qt::Key_Launch50x010000a7On X11 this key is mapped to XF86XK_Launch3 key for legacy reasons.
Qt::Key_Percent0x25 Qt::Key_Launch60x010000a8On X11 this key is mapped to XF86XK_Launch4 key for legacy reasons.
Qt::Key_Ampersand0x26 Qt::Key_Launch70x010000a9On X11 this key is mapped to XF86XK_Launch5 key for legacy reasons.
Qt::Key_Apostrophe0x27 Qt::Key_Launch80x010000aaOn X11 this key is mapped to XF86XK_Launch6 key for legacy reasons.
Qt::Key_ParenLeft0x28 Qt::Key_Launch90x010000abOn X11 this key is mapped to XF86XK_Launch7 key for legacy reasons.
Qt::Key_ParenRight0x29 Qt::Key_LaunchA0x010000acOn X11 this key is mapped to XF86XK_Launch8 key for legacy reasons.
Qt::Key_Asterisk0x2a Qt::Key_LaunchB0x010000adOn X11 this key is mapped to XF86XK_Launch9 key for legacy reasons.
Qt::Key_Plus0x2b Qt::Key_LaunchC0x010000aeOn X11 this key is mapped to XF86XK_LaunchA key for legacy reasons.
Qt::Key_Comma0x2c Qt::Key_LaunchD0x010000afOn X11 this key is mapped to XF86XK_LaunchB key for legacy reasons.
Qt::Key_Minus0x2d Qt::Key_LaunchE0x010000b0On X11 this key is mapped to XF86XK_LaunchC key for legacy reasons.
Qt::Key_Period0x2e Qt::Key_LaunchF0x010000b1On X11 this key is mapped to XF86XK_LaunchD key for legacy reasons.
Qt::Key_Slash0x2f Qt::Key_LaunchG0x0100010eOn X11 this key is mapped to XF86XK_LaunchE key for legacy reasons.
Qt::Key_00x30 Qt::Key_LaunchH0x0100010fOn X11 this key is mapped to XF86XK_LaunchF key for legacy reasons.
Qt::Key_10x31 Qt::Key_MonBrightnessUp0x010000b2 
Qt::Key_20x32 Qt::Key_MonBrightnessDown0x010000b3 
Qt::Key_30x33 Qt::Key_KeyboardLightOnOff0x010000b4 
Qt::Key_40x34 Qt::Key_KeyboardBrightnessUp0x010000b5 
Qt::Key_50x35 Qt::Key_KeyboardBrightnessDown0x010000b6 
Qt::Key_60x36 Qt::Key_PowerOff0x010000b7 
Qt::Key_70x37 Qt::Key_WakeUp0x010000b8 
Qt::Key_80x38 Qt::Key_Eject0x010000b9 
Qt::Key_90x39 Qt::Key_ScreenSaver0x010000ba 
Qt::Key_Colon0x3a Qt::Key_WWW0x010000bb 
Qt::Key_Semicolon0x3b Qt::Key_Memo0x010000bc 
Qt::Key_Less0x3c Qt::Key_LightBulb0x010000bd 
Qt::Key_Equal0x3d Qt::Key_Shop0x010000be 
Qt::Key_Greater0x3e Qt::Key_History0x010000bf 
Qt::Key_Question0x3f Qt::Key_AddFavorite0x010000c0 
Qt::Key_At0x40 Qt::Key_HotLinks0x010000c1 
Qt::Key_A0x41 Qt::Key_BrightnessAdjust0x010000c2 
Qt::Key_B0x42 Qt::Key_Finance0x010000c3 
Qt::Key_C0x43 Qt::Key_Community0x010000c4 
Qt::Key_D0x44 Qt::Key_AudioRewind0x010000c5 
Qt::Key_E0x45 Qt::Key_BackForward0x010000c6 
Qt::Key_F0x46 Qt::Key_ApplicationLeft0x010000c7 
Qt::Key_G0x47 Qt::Key_ApplicationRight0x010000c8 
Qt::Key_H0x48 Qt::Key_Book0x010000c9 
Qt::Key_I0x49 Qt::Key_CD0x010000ca 
Qt::Key_J0x4a Qt::Key_Calculator0x010000cbOn X11 this key is not mapped for legacy reasons. Use Qt::Key_Launch1 instead.
Qt::Key_K0x4b Qt::Key_ToDoList0x010000cc 
Qt::Key_L0x4c Qt::Key_ClearGrab0x010000cd 
Qt::Key_M0x4d Qt::Key_Close0x010000ce 
Qt::Key_N0x4e Qt::Key_Copy0x010000cf 
Qt::Key_O0x4f Qt::Key_Cut0x010000d0 
Qt::Key_P0x50 Qt::Key_Display0x010000d1 
Qt::Key_Q0x51 Qt::Key_DOS0x010000d2 
Qt::Key_R0x52 Qt::Key_Documents0x010000d3 
Qt::Key_S0x53 Qt::Key_Excel0x010000d4 
Qt::Key_T0x54 Qt::Key_Explorer0x010000d5 
Qt::Key_U0x55 Qt::Key_Game0x010000d6 
Qt::Key_V0x56 Qt::Key_Go0x010000d7 
Qt::Key_W0x57 Qt::Key_iTouch0x010000d8 
Qt::Key_X0x58 Qt::Key_LogOff0x010000d9 
Qt::Key_Y0x59 Qt::Key_Market0x010000da 
Qt::Key_Z0x5a Qt::Key_Meeting0x010000db 
Qt::Key_BracketLeft0x5b Qt::Key_MenuKB0x010000dc 
Qt::Key_Backslash0x5c Qt::Key_MenuPB0x010000dd 
Qt::Key_BracketRight0x5d Qt::Key_MySites0x010000de 
Qt::Key_AsciiCircum0x5e Qt::Key_News0x010000df 
Qt::Key_Underscore0x5f Qt::Key_OfficeHome0x010000e0 
Qt::Key_QuoteLeft0x60 Qt::Key_Option0x010000e1 
Qt::Key_BraceLeft0x7b Qt::Key_Paste0x010000e2 
Qt::Key_Bar0x7c Qt::Key_Phone0x010000e3 
Qt::Key_BraceRight0x7d Qt::Key_Calendar0x010000e4 
Qt::Key_AsciiTilde0x7e Qt::Key_Reply0x010000e5 
Qt::Key_nobreakspace0x0a0 Qt::Key_Reload0x010000e6 
Qt::Key_exclamdown0x0a1 Qt::Key_RotateWindows0x010000e7 
Qt::Key_cent0x0a2 Qt::Key_RotationPB0x010000e8 
Qt::Key_sterling0x0a3 Qt::Key_RotationKB0x010000e9 
Qt::Key_currency0x0a4 Qt::Key_Save0x010000ea 
Qt::Key_yen0x0a5 Qt::Key_Send0x010000eb 
Qt::Key_brokenbar0x0a6 Qt::Key_Spell0x010000ec 
Qt::Key_section0x0a7 Qt::Key_SplitScreen0x010000ed 
Qt::Key_diaeresis0x0a8 Qt::Key_Support0x010000ee 
Qt::Key_copyright0x0a9 Qt::Key_TaskPane0x010000ef 
Qt::Key_ordfeminine0x0aa Qt::Key_Terminal0x010000f0 
Qt::Key_guillemotleft0x0ab Qt::Key_Tools0x010000f1 
Qt::Key_notsign0x0ac Qt::Key_Travel0x010000f2 
Qt::Key_hyphen0x0ad Qt::Key_Video0x010000f3 
Qt::Key_registered0x0ae Qt::Key_Word0x010000f4 
Qt::Key_macron0x0af Qt::Key_Xfer0x010000f5 
Qt::Key_degree0x0b0 Qt::Key_ZoomIn0x010000f6 
Qt::Key_plusminus0x0b1 Qt::Key_ZoomOut0x010000f7 
Qt::Key_twosuperior0x0b2 Qt::Key_Away0x010000f8 
Qt::Key_threesuperior0x0b3 Qt::Key_Messenger0x010000f9 
Qt::Key_acute0x0b4 Qt::Key_WebCam0x010000fa 
Qt::Key_mu0x0b5 Qt::Key_MailForward0x010000fb 
Qt::Key_paragraph0x0b6 Qt::Key_Pictures0x010000fc 
Qt::Key_periodcentered0x0b7 Qt::Key_Music0x010000fd 
Qt::Key_cedilla0x0b8 Qt::Key_Battery0x010000fe 
Qt::Key_onesuperior0x0b9 Qt::Key_Bluetooth0x010000ff 
Qt::Key_masculine0x0ba Qt::Key_WLAN0x01000100 
Qt::Key_guillemotright0x0bb Qt::Key_UWB0x01000101 
Qt::Key_onequarter0x0bc Qt::Key_AudioForward0x01000102 
Qt::Key_onehalf0x0bd Qt::Key_AudioRepeat0x01000103 
Qt::Key_threequarters0x0be Qt::Key_AudioRandomPlay0x01000104 
Qt::Key_questiondown0x0bf Qt::Key_Subtitle0x01000105 
Qt::Key_Agrave0x0c0 Qt::Key_AudioCycleTrack0x01000106 
Qt::Key_Aacute0x0c1 Qt::Key_Time0x01000107 
Qt::Key_Acircumflex0x0c2 Qt::Key_Hibernate0x01000108 
Qt::Key_Atilde0x0c3 Qt::Key_View0x01000109 
Qt::Key_Adiaeresis0x0c4 Qt::Key_TopMenu0x0100010a 
Qt::Key_Aring0x0c5 Qt::Key_PowerDown0x0100010b 
Qt::Key_AE0x0c6 Qt::Key_Suspend0x0100010c 
Qt::Key_Ccedilla0x0c7 Qt::Key_ContrastAdjust0x0100010d 
Qt::Key_Egrave0x0c8 Qt::Key_TouchpadToggle0x01000110 
Qt::Key_Eacute0x0c9 Qt::Key_TouchpadOn0x01000111 
Qt::Key_Ecircumflex0x0ca Qt::Key_TouchpadOff0x01000112 
Qt::Key_Ediaeresis0x0cb Qt::Key_MicMute0x01000113 
Qt::Key_Igrave0x0cc Qt::Key_Red0x01000114 
Qt::Key_Iacute0x0cd Qt::Key_Green0x01000115 
Qt::Key_Icircumflex0x0ce Qt::Key_Yellow0x01000116 
Qt::Key_Idiaeresis0x0cf Qt::Key_Blue0x01000117 
Qt::Key_ETH0x0d0 Qt::Key_ChannelUp0x01000118 
Qt::Key_Ntilde0x0d1 Qt::Key_ChannelDown0x01000119 
Qt::Key_Ograve0x0d2 Qt::Key_MediaLast0x0100ffff 
Qt::Key_Oacute0x0d3 Qt::Key_unknown0x01ffffff 
Qt::Key_Ocircumflex0x0d4 Qt::Key_Call0x01100004A key to answer or initiate a call (see Qt::Key_ToggleCallHangup for a key to toggle current call state)
Qt::Key_Otilde0x0d5 Qt::Key_Camera0x01100020A key to activate the camera shutter
Qt::Key_Odiaeresis0x0d6 Qt::Key_CameraFocus0x01100021A key to focus the camera
Qt::Key_multiply0x0d7 Qt::Key_Context10x01100000 
Qt::Key_Ooblique0x0d8 Qt::Key_Context20x01100001 
Qt::Key_Ugrave0x0d9 Qt::Key_Context30x01100002 
Qt::Key_Uacute0x0da Qt::Key_Context40x01100003 
Qt::Key_Ucircumflex0x0db Qt::Key_Flip0x01100006 
Qt::Key_Udiaeresis0x0dc Qt::Key_Hangup0x01100005A key to end an ongoing call (see Qt::Key_ToggleCallHangup for a key to toggle current call state)
Qt::Key_Yacute0x0dd Qt::Key_No0x01010002 
Qt::Key_THORN0x0de Qt::Key_Select0x01010000 
Qt::Key_ssharp0x0df Qt::Key_Yes0x01010001 
Qt::Key_division0x0f7 Qt::Key_ToggleCallHangup0x01100007A key to toggle the current call state (ie. either answer, or hangup) depending on current call state
Qt::Key_ydiaeresis0x0ff Qt::Key_VoiceDial0x01100008 
Qt::Key_Multi_key0x01001120 Qt::Key_LastNumberRedial0x01100009 
Qt::Key_Codeinput0x01001137 Qt::Key_Execute0x01020003 
Qt::Key_SingleCandidate0x0100113c Qt::Key_Printer0x01020002 
Qt::Key_MultipleCandidate0x0100113d Qt::Key_Play0x01020005 
Qt::Key_PreviousCandidate0x0100113e Qt::Key_Sleep0x01020004 
Qt::Key_Mode_switch0x0100117e Qt::Key_Zoom0x01020006 
Qt::Key_Kanji0x01001121 Qt::Key_Cancel0x01020001 
  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值