• 5815阅读
  • 3回复

组合键 [复制链接]

上一主题 下一主题
离线gueangyik
 
只看楼主 倒序阅读 楼主  发表于: 2010-04-05
比如我想让物体在一起按下上键和左键时斜着走,我本以为是这样判断:event()->key()==(Qt::Key_Up | Qt::Key_left), 结果不是这样,Qt::Key_Up 和Qt::Key_left进行或运算的结果成了另一个按键的值。请大家指教,如何才能让识别多个键一起按下呢?谢谢
离线nmiirq

只看该作者 1楼 发表于: 2010-04-05
我转一个贴来回答:
Qt下有一个类叫QAccel,可以处理含有CTRL, ALT和SHIFT的组合键。

如果组合键里面没有这几个键, 怎么处理呢?

有一个KeyPressEvent的Slot可以处理:

bool is_key_f8 = false;

bool is_key_f4 = false;

class FreqDlg::KeyPressEvent(QKeyEvent *e)

{

     switch(e->key())

    {

            case Key_F4:

                 if(is_key_f8)

                 {

                        is_key_f8 = false;

                        is_key_f4 = false;

                        start_check();

                 }

                  else

                           is_key_f4 = true;

                 break;

         case Key_F8:

                 if(is_key_f4)

                 {

                        is_key_f4= false;

                        is_key_f8 = false

                        start_check();

                 }

                 else

                       is_key_f8 = true;

                 break;

          default:

                 QWidget::KeyPressEvent(e);

     }

}



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/philofly/archive/2009/01/19/3838145.aspx
离线yangfanxing
只看该作者 2楼 发表于: 2010-04-05
这个|操作当然不行;
可以试用4个bool变量分别记录上下左右键的按下和释放状态。
这样一个键的状态为按下是查询其它键的状态,再实现你需要的操作。
PHPWind好恶心。。。不想看这种界面。。。
离线voidbroken

只看该作者 3楼 发表于: 2011-04-18
QT4以后版本没有QAccel了
快速回复
限100 字节
 
上一个 下一个