• 5372阅读
  • 6回复

[提问]关于QT 的键盘事件(debug+enter) [复制链接]

上一主题 下一主题
离线peteryouming
 

只看楼主 倒序阅读 楼主  发表于: 2013-05-16
关键词: 问题窗口事件
我遇到个关于键盘事件问题,就是想在键盘上敲入debug,然后按回车键,就弹出另外个窗口。我写了个键盘事件如下,却运行不了,请高手指教:

void keyPressevent(Qkeyevent *event)
{
if(event->key() = =Qt::Key_D)
  if(event->key() = =Qt::Key_E)
     if(event->key() = =Qt::Key_B)
       if(event->key() = =Qt::Key_U)
          if(event->key() = =Qt::Key_G)
            if(event->key() = =Qt::Key_D)                
                 if(event->key() = =Qt::Key_Enter)
                        slot_btnmax();
}
离线jdwx

只看该作者 1楼 发表于: 2013-05-16
搞得这么复杂还不如用QAction设置个快捷键Ctrl+?
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线dbzhang800

只看该作者 2楼 发表于: 2013-05-16
引用楼主peteryouming于2013-05-16 14:43发表的 关于QT 的键盘事件(debug+enter) :
我遇到个关于键盘事件的问题,就是想在键盘上敲入debug,然后按回车键,就弹出另外个窗口。我写了个键盘事件如下,却运行不了,请高手指教:
void keyPressevent(Qkeyevent *event)
{
if(event->key() = =Qt::Key_D)
.......


你重新看看你的代码,等价于下面的写法吧
  1. void keyPressevent(Qkeyevent *event)
  2. {
  3. if(event->key() = =Qt::Key_D
  4. && event->key() = =Qt::Key_E
  5. && event->key() = =Qt::Key_B
  6. && event->key() = =Qt::Key_U
  7. && event->key() = =Qt::Key_G
  8. && event->key() = =Qt::Key_D
  9. && event->key() = =Qt::Key_Enter)
  10.                         slot_btnmax();
  11. }
这能成立么?

离线peteryouming

只看该作者 3楼 发表于: 2013-05-16
回 2楼(dbzhang800) 的帖子
是的,我的代码是同时按住,这不符合要求,能请教该怎么样写呢,因为DEBUG是依次输入的,
离线ppdayz

只看该作者 4楼 发表于: 2013-05-16
感觉向是在玩魂斗罗的时候用秘籍  上上下下左右左右ba。。。
  1. QList<int> keyList = QList<int>() << Qt::Key_D.....<< Qt::Key_Enter;
  2. int offset = 0;

然后么:
  1. void keyPressevent(Qkeyevent *event)
  2. {
  3.     if(keyList.at(offset) == event->key()){
  4.         offset  ++;
  5.         if(keyList.size() == offset){  
  6.              offset = 0;
  7.              do_something();
  8.         }
  9.     }else{
  10.         offset = 0;
  11.     }
  12. }




只看该作者 5楼 发表于: 2013-05-16
给你点提示吧:你想要的是一个“彩蛋”的功能,但是我给无法提供源码,抱歉!!!有时间把思路提供给你把。
离线peteryouming

只看该作者 6楼 发表于: 2013-05-16
引用第4楼ppdayz于2013-05-16 16:28发表的  :
感觉向是在玩魂斗罗的时候用秘籍  上上下下左右左右ba。。。
  1. QList<int> keyList = QList<int>() << Qt::Key_D.....<< Qt::Key_Enter;
  2. int offset = 0;

然后么:
[code]void keyPressevent(Qkeyevent *event)
.......

万分感谢ppdayz!

快速回复
限100 字节
 
上一个 下一个