嵌入式Qt特殊功能按键的实现
求助,我要做的Qt应用软件是基于嵌入式平台的,界面上有几个特殊的功能按键,在界面的底部,想实现click触发后向上弹出菜单,现在的问题是:没有鼠标、也不是触摸屏,现在不知道该如何实现键盘响应了。
我现在的想法是:当功能键被按下,发送键盘信息给Qt,Qt把它当F1之类的键值处理
void MyMainDialog::keyPressEvent(QKeyEvent *event)
{
switch(event.key())
{
case Qt::Key_F1:
setupBtn_clicked();
break;
case Qt::Key_F2:
....
break;
....
}
}
其中,setupBtn_clicked()函数实现菜单向上弹出,
void MyMainDialog::setupBtn_clicked()
{
QPoint pos;
pos.setX(0);
pos.setY(-setupMenu.sizeHint().height());
setupMenu.exec(ui.setupBtn.mapToGlobal(pos));
}
具体的菜单实现我就不写了。。。
这样做之后,在主机上做了下试验,按下F1,确实会响应,也可以进入上拉菜单进行下一步操作,
但如果按过F1之后,如果再按F2、F3之类的就没有反应了,似乎是焦点一直在F1所在菜单下,无法回到主界面上来,或者切换到其他按键上!!
求各位大神指导,是我思路有问题吗?或者有改进方法,使界面更人性化,甚至可以使得上拉菜单按钮实现按一次弹出,再按一次就收回这种情况,谢谢!
[解决办法]
setupMenu.exec(ui.setupBtn.mapToGlobal(pos));
你执行了这句,就是阻塞了,程序就阻塞在这个地方了,直到你的菜单退出了,程序才会从这个函数返回,所以按下F1之后,程序就阻塞在了那个地方,你后面按F2当然没反应了。
[解决办法]