• 9493阅读
  • 4回复

[提问]功能键QKeyEvent 的key 和标准键盘KEYCODE不对应 [复制链接]

上一主题 下一主题
离线zllang
 

只看楼主 倒序阅读 楼主  发表于: 2011-05-25
我想使用WINDOWS消息中的keycode构造 QKeyEvent.在普通的ASCII键都没有问题
但是当按PAGE UP/PAGE DOWN等功能按键时出现不对应,WINDOWS消息中的keycode 是33、34,但是在QT::KEY ENUM中
  1. Qt::Key_PageUp    0x01000016    
  2. Qt::Key_PageDown    0x01000017

有谁遇到过类似的情况吗?
离线dbzhang800

只看该作者 1楼 发表于: 2011-05-25
引用楼主zllang于2011-05-25 11:40发表的 功能键QKeyEvent 的key 和标准键盘KEYCODE不对应 :
我想使用WINDOWS消息中的keycode构造 QKeyEvent.在普通的ASCII键都没有问题,
但是当按PAGE UP/PAGE DOWN等功能按键时出现不对应,WINDOWS消息中的keycode 是33、34,但是在QT::KEY ENUM中
  1. Qt::Key_PageUp    0x01000016    
  2. Qt::Key_PageDown    0x01000017

有谁遇到过类似的情况吗?

呵呵,本来就是这样啊。
离线zllang

只看该作者 2楼 发表于: 2011-05-25
怎么解决呢,这些控制键的code和ascii code甚至都没有线性的对应关系。这怎么转呀
离线dbzhang800

只看该作者 3楼 发表于: 2011-05-25
引用第2楼zllang于2011-05-25 13:41发表的  :
怎么解决呢,这些控制键的code和ascii code甚至都没有线性的对应关系。这怎么转呀

查表呗,

题外:需要例子么?

  1. static const uint KeyTbl[] = { // Keyboard mapping table
  2.                         // Dec |  Hex | Windows Virtual key
  3.     Qt::Key_unknown,    //   0   0x00
  4.     Qt::Key_unknown,    //   1   0x01   VK_LBUTTON          | Left mouse button
  5.     Qt::Key_unknown,    //   2   0x02   VK_RBUTTON          | Right mouse button
  6.     Qt::Key_Cancel,     //   3   0x03   VK_CANCEL           | Control-Break processing
  7.     Qt::Key_unknown,    //   4   0x04   VK_MBUTTON          | Middle mouse button
  8.     Qt::Key_unknown,    //   5   0x05   VK_XBUTTON1         | X1 mouse button
  9.     Qt::Key_unknown,    //   6   0x06   VK_XBUTTON2         | X2 mouse button
  10.     Qt::Key_unknown,    //   7   0x07   -- unassigned --
  11.     Qt::Key_Backspace,  //   8   0x08   VK_BACK             | BackSpace key
  12.     Qt::Key_Tab,        //   9   0x09   VK_TAB              | Tab key
  13.     Qt::Key_unknown,    //  10   0x0A   -- reserved --
  14.     Qt::Key_unknown,    //  11   0x0B   -- reserved --
  15.     Qt::Key_Clear,      //  12   0x0C   VK_CLEAR            | Clear key
  16.     Qt::Key_Return,     //  13   0x0D   VK_RETURN           | Enter key
  17.     Qt::Key_unknown,    //  14   0x0E   -- unassigned --
  18.     Qt::Key_unknown,    //  15   0x0F   -- unassigned --
  19.     Qt::Key_Shift,      //  16   0x10   VK_SHIFT            | Shift key
  20.     Qt::Key_Control,    //  17   0x11   VK_CONTROL          | Ctrl key
  21.     Qt::Key_Alt,        //  18   0x12   VK_MENU             | Alt key
  22.     Qt::Key_Pause,      //  19   0x13   VK_PAUSE            | Pause key
  23.     Qt::Key_CapsLock,   //  20   0x14   VK_CAPITAL          | Caps-Lock
  24.     Qt::Key_unknown,    //  21   0x15   VK_KANA / VK_HANGUL | IME Kana or Hangul mode
  25.     Qt::Key_unknown,    //  22   0x16   -- unassigned --
  26.     Qt::Key_unknown,    //  23   0x17   VK_JUNJA            | IME Junja mode
  27.     Qt::Key_unknown,    //  24   0x18   VK_FINAL            | IME final mode
  28.     Qt::Key_unknown,    //  25   0x19   VK_HANJA / VK_KANJI | IME Hanja or Kanji mode
  29.     Qt::Key_unknown,    //  26   0x1A   -- unassigned --
  30.     Qt::Key_Escape,     //  27   0x1B   VK_ESCAPE           | Esc key
  31.     Qt::Key_unknown,    //  28   0x1C   VK_CONVERT          | IME convert
  32. ...


离线zllang

只看该作者 4楼 发表于: 2011-05-25
引用第3楼dbzhang800于2011-05-25 13:52发表的  :
查表呗,
题外:需要例子么?
.......

谢谢了,幸好我用到的键不多,直接写code在case后面了。
快速回复
限100 字节
 
上一个 下一个