• 6152阅读
  • 0回复

【提问】求助 关于加速键的问题 [复制链接]

上一主题 下一主题
离线zccmin
 
只看楼主 倒序阅读 楼主  发表于: 2006-02-10
我在一个程序中用了几个加速键,用法都一样的,但是碰到一个出了问题,请大家给我看看:
QAccel *ac = new QAccel( this);
ac->connectItem(ac->insertItem(Key_Down,200),this,SLOT(DownSlot()));
ac->connectItem(ac->insertItem(Key_Up,201),this,SLOT(UpSlot()));
ac->connectItem(ac->insertItem(Key_BackSpace,202),this,SLOT(DeleteSlot()));
问题出现这情况:
执行程序后,按Up或Down键能响应各自的槽,可是按BackSpace键时,根本没响应DeleteSlot() // 我在该槽的第一行里设打印语句没打印。
如果我进行一次别的事件操作,再按Backspace就能响应Deleteslot()槽。我想要的效果是Backspace能直接响应。
我尝试了一些方法:
1,在初始化时,我加上 ac->setItemEnabled(202,TRUE);// 我觉得是多余的,默认就是TRUE
2,把按键改换,ac->connectItem(ac->insertItem(Key_BackSpace,202),this,SLOT(DeleteSlot()));换成 ac->connectItem(ac->insertItem(Key_B,202),this,SLOT(DeleteSlot()));
效果一样。
3,把按键改换,ac->connectItem(ac->insertItem(Key_BackSpace,202),this,SLOT(DeleteSlot()));换成 ac->connectItem(ac->insertItem(Key_RIGHT,202),this,SLOT(DeleteSlot()));
// RIGHT,LEFT ,UP ,DOWN 都行,达到我想要的效果---------Backspace能直接响应。
4,把按键改换,ac->connectItem(ac->insertItem(Key_BackSpace,202),this,SLOT(DeleteSlot()));换成 ac->connectItem(ac->insertItem(Key_BackSpace+CTRL,202),this,SLOT(DeleteSlot()));达到我想要的效果---------Backspace能直接响应。
谢谢大家指点
[ 此贴被XChinux在2006-02-10 16:29重新编辑 ]
快速回复
限100 字节
 
上一个 下一个